交叉编译:仅在目标系统上可用的链接

时间:2016-10-11 21:06:11

标签: c++ linker cross-compiling

有没有办法链接到只在目标系统上可用的共享库,而不是用于交叉编译的系统?我想交叉编译另一个链接到目标系统上的共享库的共享库。

在我的源代码目录中有一个include目录,其中包含带有函数声明的头文件。我通过

编译源代码
arm-linux-gnueabi-g++ -Wall -fPIC -I include/ -c mysource1.cpp
arm-linux-gnueabi-g++ -Wall -fPIC -I include/ -c mysource2.cpp

此状态下没有错误或警告。下一个命令

arm-linux-gnueabi-g++ -shared -fPIC -rdynamic mysource1.o mysource2.o -L /usr/lib/libtargetsys_shlib.so -Wl,-z,defs -o another_shared_lib.so

报告以下错误:

mysource2.o: In function `my_func_2':
mysource2.cpp:(.text+0xe): undefined reference to `share_lib_func'

shared_lib_func存在于目标系统共享库中。

1 个答案:

答案 0 :(得分:1)

在交叉编译后的链接中,您不需要 native 库,您需要来自目标系统的库。将其复制到您的构建系统。