首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交叉编译:链接到mysql、liblog4cpp等

交叉编译:链接到mysql、liblog4cpp等
EN

Stack Overflow用户
提问于 2013-06-13 04:03:21
回答 1查看 851关注 0票数 1

我正在尝试交叉编译一个ARM处理器系统的项目。我可以通过构建步骤,但在链接上失败了。

有问题的应用程序与liblog4cpplibmysql链接。为了使构建正常工作,我从一个ARM系统复制了相关文件,但似乎存在运行时依赖项。特定错误:

代码语言:javascript
复制
/usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld:  
  warning: libz.so.1, needed by /usr/lib/mysql_arm/libmysqlclient.so,   
  not found (try using -rpath or -rpath-link)   
/usr/lib/mysql_arm/libmysqlclient.so: undefined reference to `compress'
/usr/lib/mysql_arm/libmysqlclient.so: undefined reference to `uncompress'
collect2: ld returned 1 exit status

在我的构建步骤中,我链接到了libz.so,但是使用-rpath的建议让我想知道mysql库是否需要运行时链接。如果我在我的构建系统上设置了这个值,当它在运行的系统上找不到对应的路径时,它会不会感到不安?

或者-有没有办法使用apt-get为其他目标安装文件?我已经从emdebian安装了交叉编译器,但我看不到在不破坏构建系统的情况下获取特定目标的库文件的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-13 04:54:42

对于后代:如果您想包含其他库并遇到此类错误消息:

使用-rpath-link指向包含其他运行时库的文件夹。需要注意的是,您的构建语句(在本例中为arm-linux-gnueabi-g++) )必须在命令前面加上-Wl,。因此,生成的命令将如下所示:

代码语言:javascript
复制
arm-linux-gnueabi-g++ -Wall -O0 <other params here> file0.o file1.o 
  -Wl,-rpath-link /usr/lib/<path to arm library for run-time> 
  -L <some other library path> -l <something like mysql or bluetooth>

重要的部分是第二行。这个问题在构建机器和运行它的机器上都得到了正确的解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17074305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档