我想将我的用 C/C++(Linux 环境 gcc/g++ 编译器)编写的项目作为共享库/静态库共享,而不实际共享源代码。这样其他用户就可以在不真正了解我的源代码的情况下使用我的项目。谁能告诉我如何将其共享为 .so/.a 格式?
假设,我的项目如下所示:
main.cpp,
源1.cpp,
源2.cpp,
源3.cpp,
head1.h,
Makefile
如何通过隐藏文件的源代码来共享该项目源1.cpp, 源2.cpp and 源3.cpp并将它们制作为共享库/静态库。main.cpp文件包含 main() 函数。详细流程是怎样的?
PS:我是共享库/静态库的新手。
假设您有以下源文件:
mylib.c:
#include <stdio.h>
void my_print(int i)
{
printf("i=%d\n", i);
}
其公共标头是:
mylib.h:
#ifndef MYLIB_H
#define MYLIB_H
void my_print(int i);
#endif
然后您可以像这样构建库:
gcc -g -Wall -Wextra -c mylib.c
gcc -g -Wall -Wextra -shared -fPIC -o libmylib.so mylib.o
然后您可以将 libmylib.so 和 mylib.h 分发给用户。然后可以在他们的代码中使用它,如下所示:
用户程序.c:
#include "mylib.h"
int main()
{
my_print(5);
return 0;
}
然后他们会将 libmylib.so 放入 /usr/lib 或 /usr/local/lib 等位置,并像这样编译:
gcc -g -Wall -Wextra -o user_prog user_prog.c -l mylib
对于您的特定情况,假设 head1.h 包含公共接口和 source1.cpp source2.cpp source3.cpp 库,您将像这样编译:
g++ -g -Wall -Wextra -c source1.cpp
g++ -g -Wall -Wextra -c source2.cpp
g++ -g -Wall -Wextra -c source3.cpp
g++ -g -Wall -Wextra -shared -fPIC -o libmylib.so source1.o source2.o source3.o
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)