解析在 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)
+-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)