在交叉编译中链接辅助依赖

时间:2021-07-01 13:54:07

标签: linux linker g++ cross-compiling ld

我有一个在目标机器上编译的项目(nvidia jetson),我正在尝试交叉编译。我被困在链接步骤中,正在寻找次要依赖项。

我的构建在这一步失败了:

/home/lhahn/Documents/CrossCompilation/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --sysroot=/home/lhahn/Documents/CrossCompilation/Images/jetson -O2 -g -DNDEBUG CMakeFiles/VsCommunication.dir/GetStatus.pb.cc.o CMakeFiles/VsCommunication.dir/Init.pb.cc.o CMakeFiles/VsCommunication.dir/Nack.pb.cc.o CMakeFiles/VsCommunication.dir/StartProduction.pb.cc.o CMakeFiles/VsCommunication.dir/AppData.pb.cc.o CMakeFiles/VsCommunication.dir/Counter.pb.cc.o CMakeFiles/VsCommunication.dir/Marker.pb.cc.o CMakeFiles/VsCommunication.dir/Program.pb.cc.o CMakeFiles/VsCommunication.dir/RoboterSettings.pb.cc.o CMakeFiles/VsCommunication.dir/LiveImage.pb.cc.o CMakeFiles/VsCommunication.dir/Format.pb.cc.o CMakeFiles/VsCommunication.dir/VersionCheckVsPs.pb.cc.o CMakeFiles/VsCommunication.dir/main.cpp.o CMakeFiles/VsCommunication.dir/vs_c_tcpAcceptor.cpp.o CMakeFiles/VsCommunication.dir/vs_c_tcpStream.cpp.o CMakeFiles/VsCommunication.dir/vs_c_thread.cpp.o CMakeFiles/VsCommunication.dir/vs_c_init.cpp.o CMakeFiles/VsCommunication.dir/vs_c_status.cpp.o CMakeFiles/VsCommunication.dir/vs_c_productionState.cpp.o CMakeFiles/VsCommunication.dir/vs_c_app.cpp.o CMakeFiles/VsCommunication.dir/vs_c_program.cpp.o CMakeFiles/VsCommunication.dir/vs_c_liveImage.cpp.o CMakeFiles/VsCommunication.dir/vs_c_format.cpp.o CMakeFiles/VsCommunication.dir/vs_c_calibration.cpp.o CMakeFiles/VsCommunication.dir/vs_c_marker.cpp.o CMakeFiles/VsCommunication.dir/vs_c_versionCheckVsPs.cpp.o -o ../bin/VsCommunication  -Wl,-rpath,/home/lhahn/Documents/git/VisionSystem/build/lib:/usr/local/lib:/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/lib/aarch64-linux-gnu ../lib/libVsJsonParser.so ../lib/libRedisClient.so -lstdc++fs -pthread ../lib/libNanoLog.so /home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so -lhiredis -lstdc++fs 

有错误

/home/lhahn/Documents/CrossCompilation/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libz.so.1, needed by /home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so, not found (try using -rpath or -rpath-link)
/home/lhahn/Documents/CrossCompilation/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libm.so.6, needed by /home/lhahn/Documents/CrossCompilation/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/lib/../lib64/libstdc++.so, not found (try using -rpath or -rpath-link)
/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so: undefined reference to `deflateInit2_'
/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so: undefined reference to `deflate'
/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so: undefined reference to `deflateEnd'
/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so: undefined reference to `inflate'
/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so: undefined reference to `inflateInit2_'
/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so: undefined reference to `inflateEnd'
collect2: error: ld returned 1 exit status

现在我专注于第一个问题,找不到 libz。

我阅读了关于次要依赖项的 this,据我所知 libprotobuf.so 已正确链接(请参阅下面的 readelf 输出),但错误消息看起来与上面链接中的“愚蠢”示例完全相同.

readelf -d libprotobuf.so

Dynamic section at offset 0x29ccd0 contains 32 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
...

因此,我尝试在博客文章“正确的方式”中进行链接,如下所示:

/home/lhahn/Documents/CrossCompilation/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --sysroot=/home/lhahn/Documents/CrossCompilation/Images/jetson -O2 -g -DNDEBUG CMakeFiles/VsCommunication.dir/GetStatus.pb.cc.o CMakeFiles/VsCommunication.dir/Init.pb.cc.o CMakeFiles/VsCommunication.dir/Nack.pb.cc.o CMakeFiles/VsCommunication.dir/StartProduction.pb.cc.o CMakeFiles/VsCommunication.dir/AppData.pb.cc.o CMakeFiles/VsCommunication.dir/Counter.pb.cc.o CMakeFiles/VsCommunication.dir/Marker.pb.cc.o CMakeFiles/VsCommunication.dir/Program.pb.cc.o CMakeFiles/VsCommunication.dir/RoboterSettings.pb.cc.o CMakeFiles/VsCommunication.dir/LiveImage.pb.cc.o CMakeFiles/VsCommunication.dir/Format.pb.cc.o CMakeFiles/VsCommunication.dir/VersionCheckVsPs.pb.cc.o CMakeFiles/VsCommunication.dir/main.cpp.o CMakeFiles/VsCommunication.dir/vs_c_tcpAcceptor.cpp.o CMakeFiles/VsCommunication.dir/vs_c_tcpStream.cpp.o CMakeFiles/VsCommunication.dir/vs_c_thread.cpp.o CMakeFiles/VsCommunication.dir/vs_c_init.cpp.o CMakeFiles/VsCommunication.dir/vs_c_status.cpp.o CMakeFiles/VsCommunication.dir/vs_c_productionState.cpp.o CMakeFiles/VsCommunication.dir/vs_c_app.cpp.o CMakeFiles/VsCommunication.dir/vs_c_program.cpp.o CMakeFiles/VsCommunication.dir/vs_c_liveImage.cpp.o CMakeFiles/VsCommunication.dir/vs_c_format.cpp.o CMakeFiles/VsCommunication.dir/vs_c_calibration.cpp.o CMakeFiles/VsCommunication.dir/vs_c_marker.cpp.o CMakeFiles/VsCommunication.dir/vs_c_versionCheckVsPs.cpp.o -o ../bin/VsCommunication  -Wl,-rpath,/home/lhahn/Documents/git/VisionSystem/build/lib:/usr/local/lib:/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/lib/aarch64-linux-gnu ../lib/libVsJsonParser.so ../lib/libRedisClient.so -lstdc++fs -pthread ../lib/libNanoLog.so /home/lhahn/Documents/CrossCompilation/Images/jetson/usr/local/lib/libprotobuf.so -Wl,-rpath-link,/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/lib/aarch64-linux-gnu -lhiredis -lstdc++fs 

注意 -Wl,-rpath-link,/home/lhahn/Documents/CrossCompilation/Images/jetson/usr/lib/aarch64-linux-gnu,它应该将链接器指向 libz 依赖项。

然而,我仍然得到完全相同的结果。

如果您对我遗漏的内容有任何建议,我将不胜感激

0 个答案:

没有答案
相关问题