繁体   English   中英

如何共享我的C / C ++项目并隐藏一些源代码?

[英]How do I share my C/C++ project and hide some of the source code?

我想分享我用C / C ++(Linux环境gcc / g ++编译器)编写的项目作为共享库/静态库而不实际共享源代码。 这样其他用户就可以在不知道我的源代码的情况下使用我的项目。 任何人都可以告诉我如何以.so / .a格式分享它?

假设,我的项目看起来像:

main.cppsource1.cppsource2.cppsource3.cpphead1.hMakefile

如何通过隐藏文件source1.cppsource2.cppsource3.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分发给用户。 然后可以在他们的代码中使用它,如下所示:

user_prog.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

您需要从源文件创建目标文件。 然后创建静态和/或共享库。 您需要提供一个头文件以供库使用。 请注意,您的库不得包含main()。

查看gcc的详细说明

当然可以。 只需向人们提供库文件以及与用于构建库的源文件相对应的头文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM