【发布时间】:2018-03-25 10:30:42
【问题描述】:
我使用
从源代码构建了自己的 gcc/configure --host=x86_64-linux-gnu --target=x86_64-linux-gnu --enable-checking=release --enable-languages=c,c++ --disable-multilib --program-suffix=-6.4 --prefix=/home/martin/devel/gcc-6.4.0-build
make
一切都很顺利,除非我想像这样使用 cmake 构建具有静态运行时的共享库:
cmake_minimum_required(VERSION 2.6)
SET(CMAKE_C_COMPILER /home/martin/devel/gcc-6.4.0-build/bin/gcc-6.4)
SET(CMAKE_CXX_COMPILER /home/martin/devel/gcc-6.4.0-build/bin/g++-6.4)
project(Foo)
add_library(FooLib SHARED main.cpp)
target_link_libraries(FooLib -static-libgcc -static-libstdc++ -static)
当我尝试这样做时,我收到以下错误:
/usr/bin/ld: /home/martin/devel/gcc-6.4.0-build/lib/gcc/x86_64-linux-gnu/6.4.0/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC
/home/martin/devel/gcc-6.4.0-build/lib/gcc/x86_64-linux-gnu/6.4.0/crtbeginT.o: error adding symbols: Bad value
所以我怀疑gcc没有正确构建,不知道该怎么做。
【问题讨论】:
-
我建议你先选择一种编程语言,C 或 C++。