如何将多个c文件合并到一个共享库中用于外部函数接口
How to merge multpile c files into a shared library for foreign function interface
我一直在遵循这些关于如何创建共享库的说明 (http://jonisalonen.com/2012/calling-c-from-java-is-easy/),但这些说明仅显示了如何使用一个文件进行创建。当我使用这个我制作成共享库的文件时,.so 文件无法在同一位置调用其他 .c 文件。我如何编译所有 c 文件,以便我可以创建一个可通过 java 访问的合并共享库?
1) 使用 -fPIC
:
创建目标文件
gcc -fPIC -c file1.c
这将创建 file1.o
。 (file2.c
、file3.c
等相同)。
2) Link 它在共享库中。
gcc -shared -o library.so file1.o file2.o file3.o
相应地调整额外的编译器标志,包括来自您正在使用的其他东西的路径等。
我一直在遵循这些关于如何创建共享库的说明 (http://jonisalonen.com/2012/calling-c-from-java-is-easy/),但这些说明仅显示了如何使用一个文件进行创建。当我使用这个我制作成共享库的文件时,.so 文件无法在同一位置调用其他 .c 文件。我如何编译所有 c 文件,以便我可以创建一个可通过 java 访问的合并共享库?
1) 使用 -fPIC
:
gcc -fPIC -c file1.c
这将创建 file1.o
。 (file2.c
、file3.c
等相同)。
2) Link 它在共享库中。
gcc -shared -o library.so file1.o file2.o file3.o
相应地调整额外的编译器标志,包括来自您正在使用的其他东西的路径等。