如何共享我的C/C++项目并隐藏一些源代码? [英] How do I share my C/C++ project and hide some of the source code?
本文介绍了如何共享我的C/C++项目并隐藏一些源代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想把我用C/C++(LINUX环境GCC/g++编译器)写的项目作为共享库/静态库分享,而不是真正分享源代码。这样其他用户就可以在不知道我的源代码的情况下使用我的项目。谁能告诉我如何以.so/.a格式共享它?
假设我的项目如下:
main.cpp, Source1.cpp, Source2.cpp, Source3.cpp, head1.h, 生成文件
如何通过隐藏文件Source1.cpp、Source2.cpp和Source3.cpp的源代码并将它们设置为共享库/静态库来共享此项目。main.cpp文件包含main()函数。告诉我详细的程序。
PS:我是共享库/静态库的新手。
推荐答案
假设您有以下源文件:
mylib.c:
#include <stdio.h>
void my_print(int i)
{
printf("i=%d
", 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
这篇关于如何共享我的C/C++项目并隐藏一些源代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文