交叉编译:链接到mysql,liblog4cpp等

时间:2013-06-12 20:03:21

标签: debian cross-compiling

我试图为ARM处理器系统交叉编译项目。我可以通过建设步骤,但我没有通过链接。

相关应用与liblog4cpplibmysql相关联。为了使构建工作,我从ARM系统中复制了相关文件,但似乎存在运行时依赖性。具体错误:

/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安装的交叉编译器,但我没有看到一种方法来获取特定目标的库文件而不会破坏构建系统。

1 个答案:

答案 0 :(得分:1)

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

使用-rpath-link指向包含其他运行时库的文件夹。需要注意的是,你的构建语句(在这种情况下是 arm-linux-gnueabi-g ++ )必须用 -Wl,作为这样的命令。所以结果命令看起来像:

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>

重要的部分是第二行。这可以在构建计算机上及其运行的计算机上正确解析。