如何共享我的C/C++项目并隐藏一些源代码? [英] How do I share my C/C++ project and hide some of the source code?

查看:0
本文介绍了如何共享我的C/C++项目并隐藏一些源代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想把我用C/C++(LINUX环境GCC/g++编译器)写的项目作为共享库/静态库分享,而不是真正分享源代码。这样其他用户就可以在不知道我的源代码的情况下使用我的项目。谁能告诉我如何以.so/.a格式共享它?

假设我的项目如下:

main.cppSource1.cppSource2.cppSource3.cpphead1.h生成文件

如何通过隐藏文件Source1.cppSource2.cppSource3.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆