当前位置: 首页 > 知识库问答 >
问题:

使用gcc命令行从.c文件生成.so文件

吕成业
2023-03-14

我试图为Linux动态库(.so文件)创建一个hello world项目。所以我有一个文件HELLO.C:

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

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

共有1个答案

白博赡
2023-03-14

要生成共享库,首先需要使用-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文件? 问题答案: 要生成共享库,您首先需要使用(位置无关代码)标志编译C代码。 这将生成一个目标文件(.o),现在您将其创建并创建.so文件: 编辑 :来自评论的建议: 您可以使用

  • 我正在为初级操作系统Luna上的Scratch文本编辑器应用程序编写一个扩展。但是对于扩展的创建,文档实际上是不存在的,我不知道在编写了扩展的主要代码之后如何继续。 我已经写了扩展名。我还不能使用或测试它,因为它需要“安装”。我花了几个小时寻找文档,但它们不存在。然而,我在scratchlaunchpad页面上找到了一条评论 通常,您必须生成一个pluginname.so文件,并将其与plugin

  • 我试图使用JDK提供的keytool实用工具从k.jks文件生成一个。p12。 keytool-importkeystore-srckeystore mykeystore.jks-destkeystore mykeystore.p12-srcstoretype jks-deststoretype pkcs12 但是,该命令仅适用于Java1.6及以上版本。我需要在没有JDK1.6或更高版本的机器上

  • 主要内容:gcc -c指令我们知道,从 C、C++源代码生成可执行文件要经历 4 个过程,分别为预处理、编译、汇编和链接。 《 GCC -E选项:对源程序做预处理操作》一节以 demo.c 源文件为例,介绍了如何对源文件进行预处理,并生成相应的 demo.i 预处理文件;《 GCC -S选项:编译非汇编文件》一节介绍了如何对 demo.c 或者 demo.i 进行编译,并生成相应的 demo.s 汇编代码文件。 [root

  • 下面是我的cmakelists.txt文件 cmake_minimum_required(版本3.4.1) find_library(log-lib日志) target_link_libraries(native-lib${log-lib}) 我在中指定了,,因为我想要一个共享的对象库。 但它没有给我so文件。 我错过了什么?

  • 一直以来不会使用C++一直是我心头痛,不过学习Go从某种意义上补偿了我这个遗憾。 比如生成dll一直以来几乎就是C和C++的专利,现在我可以用Go轻松的实现这一点。 下面我使用一个实例来做到这一点,这个是我写的判断jpeg图是不是正向的一个Go的函数 package main import "C" import ( "fmt" "os" SunnyUtil "githu