解决.so中定义的未定义符号

时间:2017-03-06 16:53:00

标签: cmake shared-libraries

+-CMakeLists.txt
 | 
 +---Dir1
   |- source_file1.c
   |- CMakeLists.txt
 +---Dir2
   |- source_file2.c
   |- CMakeLists.txt
 +---Dir3
   |- header_file.h

我有一个使用cmake创建的共享库abc.so

此库有2个未定义的名称:

U do_something1
U do_something2

这两个文件都在另一个目录中的Headerfile.h中定义。此文件是source_file1.c和source_file2.c

的SOURCE_FILE的一部分

但是我无法在库中解析未定义的符号!这是非常奇怪的。我做错了什么?

使用-fPIC -rdynamic编译代码。 由于某种原因,-Wl --export-all-symbols出现在编译器中无法识别。编译器是gcc 5.4.0

1 个答案:

答案 0 :(得分:0)

一个。将内联函数声明为静态修复了该问题。 湾如果c文件包含带静态内联的标题

谢谢(@Tsyvarev)