解析在 header 中定义的 .so 中的未定义符号

Resolving undefined symbols in .so that are defined in header

+-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

一个。将内联函数声明为 static 解决了这个问题。 b.如果 c 文件包含带有静态内联的 header 就足够了

谢谢 (@Tsyvarev)