龙芯mips64架构编译lldb时ld报错重寻址溢出
问题
报错情况类似如下:
/home/loongson/下载/flightgear/flightgear-2019.1.1/src/Scripting/NasalCanvas.cxx:137:(.text+0x6d0): 截断重寻址至相符: R_MIPS_CALL16 针对 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()@@GLIBCXX_3.4.21
/home/loongson/下载/flightgear/flightgear-2019.1.1/src/Scripting/NasalCanvas.cxx:137:(.text+0x7a4): 从输出所省略的额外重寻址溢出
collect2: 错误:ld 返回 1
make[2]: *** [src/Main/CMakeFiles/fgfs.dir/build.make:7427:src/Main/fgfs] 错误 1
make[1]: *** [CMakeFiles/Makefile2:2133:src/Main/CMakeFiles/fgfs.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
解决方法:需要添加cxxflag -mxgot
方法1
在 CMakeList.txt 中添加一行:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mxgot")
方法2
在编译脚本里添加:
-DCMAKE_CXX_FLAGS=-mxgot
方法2,能通过编译,但是启动时会报段错误。