我们创建了一个共享对象文件并链接到我们的可执行文件:
add_executable(a ${A_SRC})
add_library(testso SHARED src/mainlib.cc test1.cc test2.cc)
target_link_libraries(a, testso)
我们注意到代码在没有 的情况下编译-fPIC
,但链接使用-fPIC
:
g++ -std=c++11 -g -c -i../../src ./test1.cc
g++ -std=c++11 -shared -fPIC ../mainlib.cc test1.o -o testso.so
-fPIC
每个文件都需要标志吗?我们会在某个时候崩溃还是这样?