在linux上交叉编译wxPython的时候遇到的一个找不到链接库的问题,求解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在linux上交叉编译wxPython的时候遇到的一个找不到链接库的问题,求解答相关的知识,希望对你有一定的参考价值。

arm-linux-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -L/usr/local/arm/gtkdfp/lib -Wl,-rpath -Wl,/usr/local/arm/gtkdfp/lib -L/usr/local/arm/gtkdfp/lib -Wl,-rpath -Wl,/usr/local/arm/gtkdfp/lib -I/usr/local/arm/gtkdfp/include build-gtk2.unicode/temp.linux-i686-2.7/src/gtk/xrc_wrap.o -L/usr/X11R6/lib -L/usr/local/arm/gtkdfp/lib -L/usr/local/arm/gtkdfp/lib -lwx_gtk2u_richtext-2.8-arm-linux -lwx_gtk2u_aui-2.8-arm-linux -lwx_gtk2u_xrc-2.8-arm-linux -lwx_gtk2u_qa-2.8-arm-linux -lwx_gtk2u_html-2.8-arm-linux -lwx_gtk2u_adv-2.8-arm-linux -lwx_gtk2u_core-2.8-arm-linux -lwx_baseu_xml-2.8-arm-linux -lwx_baseu_net-2.8-arm-linux -lwx_baseu-2.8-arm-linux -lwx_gtk2u_xrc-2.8 -o build-gtk2.unicode/lib.linux-i686-2.7/wx/_xrc.so -pthread -Wl,-rpath -Wl,/usr/local/arm/gtkdfp/lib
/usr/local/arm/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lwx_gtk2u_xrc-2.8
collect2: ld returned 1 exit status
error: command 'arm-linux-g++' failed with exit status 1
在/usr/local/arm/gtkdfp/lib下已经有了/usr/lib/libwx_gtk2u_xrc-2.8.so.0 /usr/lib/libwx_gtk2u_xrc-2.8.so.0.8.0,为什么ld提示找不到库呢?

你这个文件到底在什么地方?
/usr/local/arm/gtkdfp/lib
下面怎么还有带目录名的 /usr/lib/

把程序装载稀奇古怪的地方,出现任何问题都是可能的。追问

文件在/usr/local/arm/gtkdfp/lib,/usr/lib/这个路径是粘贴错误

追答

那不应该出这个问题才对。
你试试 ln 一个 .so 不要后面的那个 .0 和 .0.8.0 的那种文件名试试。

追问

好的谢谢

参考技术A python-dev这个包装了吗追问

我是想在arm上运行wxPython,在PC上装python-dev没必要吧

在linux上交叉编译opencv踩过的坑

参考技术A 交叉编译opencv主要参考了这篇文章:

https://blog.csdn.net/kaychangeek/article/details/80113289

一、如何配置cmake

1、where is the source code:即opencv源码路径

where to build the binaries:编译生成的库文件放在这个路径下,自己设置的,自己记住就好

2、点configure按钮,弹出配置窗口,选最后一个,然后next。

3、输入自己的交叉编译器路径,第三方库路径,finish

4、等一会,cmake会出现编译选项,自行修改

我也不太清楚这里面每一个组件的具体用途,就根据网上别人给出的选项作了修改

找到BUILD_ZLIB,勾选上

找到OPENCV_GENERATE_PKGCONFIG,勾选上。这是生成.pc文件的选项

build_opencv_gapi不勾选。不去掉会编译报错

#疑问:是不是选中了witn_xxx选项,就要同时选中build_xxx选项?前面的交叉编译第三方依赖库有用吗?

修改cmake_build_type为Release

修改cmake_install_prefix为你自己的输出文件夹

点Generate,生成Makefile

二、编译

使用gedit打开build路径下的CMakeCache.txt文件,找到CMAKE_EXE_LINKER_FLAGS选项在后面加上:-lpthread -lrt。这是一个多线程链接库

make && make install

三、配置.pc文件

成功编译的话,你会在输出路径下找到你的库文件

然后你还会在~/lib/pkgconfig下找到你的.pc文件

因为我的电脑也装了x86平台的opencv库,为了便于区分,我把这个.pc文件改成了opencv_arm.pc,然后复制进了pkgconfig的默认路径下。

四、验证

最后验证一下:在samples/CPP中找个例程编译一下:(必须加上-std=c++11,opencv必须有c++2011支持)

大功告成!!!

装这个东西一共花了我了五天时间,几乎每一步我都会遇到问题,好在有各路网友的分享我才能成功。向开源精神致敬!!!

以上是关于在linux上交叉编译wxPython的时候遇到的一个找不到链接库的问题,求解答的主要内容,如果未能解决你的问题,请参考以下文章

在 Linux for Windows 上交叉编译 Qt5

在linux上交叉编译c++到windows

在linux上交叉编译opencv踩过的坑

windows上交叉编译go程序

windows上交叉编译go程序

如何在 Ubuntu 上交叉编译 ARM 架构的 CGO 程序