This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM335X:将 GTK+3和 gtkmm 添加到 Arago 编译中

Guru**** 2589245 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/633775/linux-am335x-adding-gtk-3-and-gtkmm-to-arago-build

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

我 的公司 希望  在    C++中开发 GTK 应用程序, 在       对 Arago 中的 gtk+3配方进行了几次修改之后 ,我  能够  构建 它 并 将其包含 在 rootfs 中。  但是 、我    遇到 了 gtkmm 库问题 -       在链接 阶段、cairomm-1.11.2上的构建制动器:

MACHINE=AM335x-EVM bitbake cairomm

|/bin/grep:/mnt/Build_disk/tisdk/build/arago-tmp-external-linaro-toolchain/sysroots/am335x-evm/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/lib/libstdc +。la:无此类文件或目录
| sed:无法读取/mnt/Build_disk/tisdk/build/arago-tmp-external-linaro-toolchain/sysroots/am335x-evm/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/lib/libstdc +。la:无此类文件或目录
| arm-linux-gnueabi-libtool:错误:'/mnt/Build_disk/tisdk/build/arago-tmp-external-linaro-toolchain/sysroots/am335x-evm/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/lib/libstdc +。la'不是有效的 libtool 归档
文件| Makefile:510:目标'libcairomm-1.0.la'的配方失败 

libpath 看起来太长、中间有意外的 home dir。 我还尝试过更新版本的 ceiromm-1.15.5、但在配置阶段失败。
是否有人将 gtkmm 及其所有依赖关系包含在 Arago 中?

这些是我在 gtk+3中必须进行的更改:

diff --git a/meta/meta/sepapes-gnome/gtk+3.in 
  
 3.in
 3.inc b/meta/gnoma-gnome/gtk+3.inc index 83e9b92.f9962af 100644 -- a/meta/meta/sepape-gegome/gtk+/gtk+c c index 83e+ jape-ench-xgx+ ge-exce-exce-dependence-gx+ gx+ ge-exce-exce-gx+ ge-exce-exce-gxgx+ ge-exce-exce-gx+ ge-exce-gx+ ge-exce-exce-gx+ ge-exce-gxe+ gx+ ge-exce-ge-gxge-degtrabus-nexce-de-gx+ gx+ ge-exce-gx+ ge-de-gx+ ge-exce-exce-degtrab-nexce-gx+ gx+ ge-exce-exce-exce-ge-
   @@@@     
              
  
  disable-glx、libgl"
-PACKAGECONFIG[wayland] = "-enable-wayland-backend、--disable-wayland-backend、wayland wayland-protocols libxkbcommon virtual/mesa waygland-native"
+PACKAGECCB[wayland] ="-enable-wayland-backend、–    

 
          
@@   @@ gm   ?remark-offerm?-offerm?m Ω-excr?m Ω-excr?m Ω-excr?m Ω-gm Ω-excr?m Ω-excr–1–1–m Ω-excr 
                          
                         ?m Ω-gm Ω-excr?m Ω-excr?m Ω-gm Ω-excr?m Ω-excr?m Ω-excr?m Ω-excr?m Ω-gm Ω-excr?m Ω-excr?m Ω-gm Ω-excr?m Ω-excr?m Ω-excr?m?m Ω-gm?m?m  
                         
   
   

  
  

我知道我应该在 bbappend 文件中执行该操作、我将在它运行时清除所有内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Peter、

    转至 build/Arago-tmp-externo-linaro-toolchain/sysroots/AM335x-evm/lib 并键入 ln -SF libstdc++.so.6 libstdc++.so
    打开 build/Arago-tmp-externo-linaro-toolchain/sysroots/AM335x-evm/lib/libsigc-2.0.la 文件、然后剪切/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf 并左侧=/lib/libstdc +.la 部件。

    此致、
    Kemal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!
    这种工作。 我必须为许多其他文件执行此操作以构建 gtkmm_3.20.1、修复程序是相对暂时的、因为它位于构建目录中-每次我更改软件包版本、执行清理或在不同的机器上运行构建时、我都必须执行此操作。 您知道我如何从源代码中修复它吗? 这是汽车封装还是 gtkmm 封装问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在中
    tisdk/build/arago-tmp-external/linaro-toolchain/work /armv7ahf-neon -linux-gnueabi/gtkmm/3.20.1-R3/deploy-ipks/armv7ahf-neon
    我可以看到 gtkmm-dev_3.20.1-r3_armv7ahf-none.ipk
    如何将其添加到 SDK 的 sysroot 文件夹中、以便可以根据该文件夹进行开发?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这种工作。 我必须为许多其他文件执行此操作以构建 gtkmm_3.20.1、修复程序是相对暂时的、因为它位于构建目录中-每次我更改软件包版本、执行清理或在不同的机器上运行构建时、我都必须执行此操作。 您知道我如何从源代码中修复它吗? 这是汽车封装还是 gtkmm 封装问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这很简单。 在 toolchain $home/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libstdc++.la 中删除/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf 并保留/lib 器件。 注释掉#rm -f ${D}${base_libdir}/libstdc++.so sources/meta-linaro/meta-linaro-toolchain/meta-linaro-toolchain/meta-devtoolches/external-linaro-toolchain/external-linaro-toolchain.bb 中、并添加 image_install_append =" cairomm"行至 build/conf/local.conf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、这很有帮助、我现在可以重建整个 gtkmm-3.20.1软件包、但我在 SDK 中缺少开发软件包。 在 tisdk-rootfs-imagebb 中,我添加了:
    image_install+=\
    GTK+3 \
    Gtkmm \
    SQLite3 \
    我可以看到 Arago-core-tskd-image 中的 libs 和 pkgconfig 文件(对于 sqlite3),但不适用于 gtkmm。

    在 arago-core-tisdk-image.inc 中、我还尝试了:
    toolchain_target_task +="gtkmm-dev"
    SDKIMAGE_FITES+="DEV-pkgs"

    我是否遗漏了什么? 这是我的 gtkmm bb 文件:

    摘要="GTK+工具包的 C++绑定"
    主页="http://www.gtkmm.org/"
    部分="libs"
    许可证="LGPLv2.1和 GPLv2"
    LIC_FILES CHKSUM ="文件://copying;MD5=4fbd65380cd255951079008b364516c \
    文件://copying.tools;MD5=751419260aa954499f7abaa882bbe "
    PR ="R3"
    取决于="atkmm pangomm glibmm gtk+3 Cairomm"
    继承 gnome autotool pkgconfig distro.features.check
    Any_of _distro_features ="x11航迹"
    Gnome_compress_type ="xz"
    #SRC_URI[archive.md5sum]="883e9046768b3a5afc8e365988823e77"
    SRC_URI[archive.sha256sum]="051de1b8756ca6ec61f26264338cfc3060af936fd70bf4558bfe1e115418c612"
    EXTER_OECONF ="--disable-documentation "
    FILES _${PN}-dev +="${libdir}/*/include ${libdir}/*/proc/m4
    BBCLASSEXTEND ="原生 nativesdk"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    local.conf 文件中将"gtkmm"附加到 image_install_append、并将"dev-pkgs"附加到 extra_image_features。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯,我不想将 dev 软件包放入我的目标 rootfs,而是放在 SDK 中。 无论如何,在我放置 dev-pkgs do_rootfs 失败后,我会在日志中看到以下内容:
    收集的错误:
    * check_conflicts_for:以下软件包与 opensh 冲突:
    * check_conflicts_for:Dropbear *
    * opkg_sol解 算器_install:无法安装软件包 openssh-dev。

    我尝试通过以下方式删除 openss-dev:
    image_install_remove ="openssh"
    image_install_remove ="openssh-dev"
    在 local.conf 中、无结果。 我很好奇 libsqlite3-dev 软件包为什么能顺利进入 SDK。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dropbear 与 openssh 冲突。 image_install_remove ="openssh"还不够、您还需要使用 BBMASK="OE-core/meta/meta/sepape-connectivity/openssh_7.3p1.bb"配方。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将 openssl 添加到 BBMASK 后、我获得了映像、但我怀疑 gtkmm-dev 进入了目标的 rootfs 映像、而不是 SDK。 但我找到了不同的解决方案。

    我已将 packagegroup-arago-tisdk-addons-sdk-targetbb 附加到:
    utils +="gtkmm-dev"


    感谢 Kemal 的帮助!