当前位置: 首页 > 面试题库 >

使用gcc命令行从.c文件构建.so文件

慕容劲
2023-03-14
问题内容

我正在尝试为Linux动态库(.so文件)创建一个hello world项目。所以我有一个文件hello.c:

#include <stdio.h>
void hello()
{
    printf("Hello world!\n");
}

如何hello()在命令行中使用gcc 创建导出的.so文件?


问题答案:

要生成共享库,您首先需要使用-fPIC(位置无关代码)标志编译C代码。

gcc -c -fPIC hello.c -o hello.o

这将生成一个目标文件(.o),现在您将其创建并创建.so文件:

gcc hello.o -shared -o libhello.so

编辑 :来自评论的建议:

您可以使用

gcc -shared -o libhello.so -fPIC hello.c


 类似资料:
  • 我试图为Linux动态库(.so文件)创建一个hello world项目。所以我有一个文件HELLO.C: 如何从命令行使用gcc创建导出的.so文件?

  • 调用 gradle 命令时, 默认情况下总是会构建当前目录下的文件, 可以使用 -b 参数选择其他目录的构建文件, 并且当你使用此参数时 settings.gradle 将不会生效, 看下面的例子: 例 11.5. 选择文件构建 subdir/myproject.gradle task hello << { println "using build file '$buildFile.nam

  • 问题内容: 我有以下目录层次结构: 在这里,SigarTest是程序包名称。根文件夹位于jdk的bin文件夹中。从那里,我运行以下命令来创建我的项目的jar文件- 其中tools.jar,mongo-2.7.3.jar和sigar.jar是必需的,并且与根目录(jdk的bin文件夹)位于同一文件夹中。但是,运行它,我得到 我究竟做错了什么 ? 问题答案: 使用 目录 选项 哪些 临时改变目录( D

  • 我得到了这个文件,但它不同于eclipse的一个输出。这个大约是100KB,eclipse输出超过2000KB。 我可以使用什么正确的命令来获得与Eclipse相同的文件?

  • 我已经编辑了这个问题,现在正是我所做的: 我想从命令行中的一些. class文件创建一个. jar文件。 我在Eclipse上工作,创造了: myProject项目,在它:myPackage包中,在它的:myClass类中。然后我在命令行中写道: 我得到了这个: 这真的创造了myJar。jar文件。现在,我想检查这个过程是否成功完成,所以我从jar中提取了这个类: 我得到了这个: 这只为我创建了M

  • 问题内容: 我有4个文件: 1.C , 升·小时 , 2.C , 2.H 。我需要一个makefile,它将从这4个文件中创建一个动态库(.so)。我试图写一个像这样的makefile文件: library.so:1.c 1.h 2.c 2.h 但它没有用。如果有人帮助我,太好了,谢谢。 问题答案: 就像是 但这未经测试!我假设Linux使用GNU make ,并且目录仅包含您的库的源代码(带有上