0

我正在交叉编译到 arm 嵌入式系统并收到一个我有疑问的错误。这是错误:

[ 19%] Built target cxjpeg-6b
Linking CXX shared library /home/botbear/JAUS++-2.110519-   src/libraries/jaus++/2.0/lib/libcxutils.so
/home/botbear/openwrt/trunk/staging_dir/toolchain-arm_v6k_gcc-linaro_uClibc-    0.9.32_eabi/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.5.4/../../../../arm-openwrt-linux-    uclibcgnueabi/bin/ld: cannot find -lpng 
collect2: ld returned 1 exit status
make[2]: *** [/home/botbear/JAUS++-2.110519-src/libraries/jaus++/2.0/lib/libcxutils.so]     Error 1
make[1]: *** [libcxutils/CxUtils/libcxutils/CMakeFiles/cxutils.dir/all] Error 2
make: *** [all] Error 2

如您所见,链接器正在寻找一个名为“libpng”的静态库。除了 libpng 库之外,子 make 文件中的命令使用 -l 开关链接到以​​下库:-lpng -lz -lX11 -lXtst -lpthread -Wl。所有库(libpng、libz、libX11 等)都在我的主机 /usr/lib/ 目录中,但我的目标工具链没有这些库。我的问题是如果我用我的目标编译器手动重新编译库会解决我的问题吗?或者我将为我的目标平台的每个库查找并安装包。

提前致谢。

4

1 回答 1

0

你似乎是为目标编译的,所以你需要目标库。可以自己编译,也可以由工具链开发环境提供(如果有的话)。后者通常会为您省去一些麻烦(交叉编译并在必要时设置路径)。

我看到你正在使用 openwrt 工具链。Openwrt 似乎将 libpng 作为一个包。如果可能的话,我会同意的。

于 2012-05-13T15:38:02.087 回答