GPS 的交叉编译显示"unrecognized option"
Cross compilation for gpsd shows "unrecognized option"
我正在为ARM架构在Ubuntu 16.04上交叉编译gpsd3.20。如您所知,gpsd 使用 Sconsctruct 来编译源代码。在我的交叉编译过程中,当它需要创建 libgps.so 时,它会显示错误unrecognized option '-Wl, -Bsymbolic'
。
在这里发布问题之前,我尝试检查我的工具链二进制文件,我发现如果我手动运行这一行:
sudo ./arm-v7a-linux-gnueabihf-ld -o test/gpsd-3.20/libgps.so.25.0.0 -pthread -shared -Wl,-Bsymbolic-functions -Wl,-soname=libgps.so.25 test/gpsd-3.20/os_compat.os test/gpsd-3.20/rtcm2_json.os test/rtcm3_json.os test/gpsd-3.20/shared_json.os test/gpsd-3.20/timespec_str.os test/gpsd-3.20/libgpsmm.os -L. -lrt -lm -lrt
上面的命令打印出我之前提到的确切错误。但是,如果我运行确切的命令将ld
替换为gcc
,则没有任何错误。
sudo ./arm-v7a-linux-gnueabihf-gcc -o test/gpsd-3.20/libgps.so.25.0.0 -pthread -shared -Wl,-Bsymbolic-functions -Wl,-soname=libgps.so.25 test/gpsd-3.20/os_compat.os test/gpsd-3.20/rtcm2_json.os test/rtcm3_json.os test/gpsd-3.20/shared_json.os test/gpsd-3.20/timespec_str.os test/gpsd-3.20/libgpsmm.os -L. -lrt -lm -lrt
在检查arm-v7a-linux-gnueabihf-gcc
--help时,我发现,gcc 支持-Wl
选项,而在arm-v7a-linux-gnueabihf-ld
中它不支持-Wl
选项。所以现在我不确定如何更改 SConstruct 文件,使其不会执行ld
而是我希望它执行gcc
特别是对于 libgps.so 部分。
(无法评论(,所以答案:你有没有尝试设置env.-var.:export LD=arm-v7a-linux-gnuabihf-gcc
GCC 获取-Wl,XXX
并将 XXX 传递给链接器。
我认为您在这里有两个组合问题,尽管在不研究构建本身的情况下涉及一些猜测。 首先,scons 不应该在构建库时添加标志(https://github.com/SCons/scons/issues/3248 - 固定的,但我相信不是发布的一部分(。其次,"链接"可能应该使用 gcc 来完成。 如果你调用 gcc 来链接,它仍然在后台调用链接器 - 在处理了用于 gcc 的选项之后,-Wl,-Bsymbolic
是这样,这意味着将-Bsymbolic
传递到链接阶段(由-Wl
表示,"l"表示链接器(。 所以我假设你告诉 scons 关于交叉工具链的方式也不是很正确,如果它直接调用 ld,你可能也会遇到其他问题。
- 在 C++ 中嵌入 V8 会导致与 libcpp 相关的"unrecognized external symbol"错误
- GPS 的交叉编译显示"unrecognized option"
- g++ complie option中的-lutil是什么意思?
- Flex:尝试使用 Flex 生成C++词法分析器; "unrecognized rule"错误
- 运行OpenMP,"clang: error: unsupported option '-fopenmp'"的Mac。
- [LLVM-9 clang-9 OSX]: std::filesystem::path unrecognized
- 静态断言失败,出现"Windows headers require the default packing option..."
- GenGetOpt - 只允许"--option",不允许"-option"
- 即使关闭CLR选项,"cannot compile C file <file> with /clr option"也收到错误D8045
- 叮叮当当 警告:"warning: unknown warning option '-Wno-maybe-uninitialized'"
- Tensorflow 1.5 contrib cmake 在使用 SessionOptions GPU Option 时
- xlC 警告,"The NOSTRICT option has the potential to alter the semantics of a program"
- Using g++ on OSX Lion, ld: unknown option: -no_compact_unwin
- Qt:带有Qt OSX Yosemite的CUDA "sed: illegal option -- r"错误
- cc1plus: error: -Werror=literal-suffix: no option -Wliteral-
- 'ld: unknown option: -rpath=./libs' - 在 Mac OS 10.7.5 上构建 OpenFramework 插件时出现链接错误
- Xcode 警告:"directory not found for option"
- VS 2008 QuickWatch option
- Combining CMake option() with add_definitions()
- "Unrecognized storage class 111 for .text symbol `._XXXXXXXXX"是什么意思?