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

GCC选项的-shared和-Wl-shared之间的区别

祁奇略
2023-03-14
问题内容

我知道这-Wl,-sharedld 的选项。我见过有人这样编译

$ gcc -shared -Wl,-soname,libtest.so -o libtest.so *.o

这样的人

$ gcc -Wl,-shared -Wl,-soname,libtest.so -o libtest.so *.o

因此,我想知道-shared和之间是否存在差异-Wl,-shared

谢谢。


问题答案:

存在
通过之间的差-shared,以GCC或-shared给ld(通过-Wl)。传递-shared给GCC可能会在链接时启用或禁用其他标志。特别是,crt*可能涉及不同的文件。

要获取更多信息,请-shared在GCC的gcc/config/目录和子目录中使用grep 。

编辑: 举一个具体的例子:在i386 FreeBSD上,gcc -shared将链接到目标文件中crtendS.o,而没有时-shared,它将链接到目标文件中crtend.o。因此,-shared-Wl,-shared不能等同。



 类似资料:
  • 共享内存是两个或多个进程之间共享的内存。 但是,为什么我们需要共享内存或其他一些通信方式? 重申一下,每个进程都有自己的地址空间,如果任何进程想要将自己的地址空间中的某些信息与其他进程通信,那么只有IPC(进程间通信)技术才有可能。 我们已经知道,沟通可以在相关或不相关的流程之间进行。 通常,使用管道或命名管道执行相互关联的过程通信。 可以使用命名管道或通过共享存储器和消息队列的流行IPC技术来执

  • indeXus.Net SharedCache是高性能的、分布式的内存对象系统,用于在动态WEB或Win应用程序中减少数据库的负责,提高访问速度。SharedCache 全部的代码都是用c#写的,100% DotNet原生态。

  • 共享科学工具箱是一个用于科学和分布式计算的Java类库。它具有广泛的多方面的阵列线性代数和FFT支持;异步,高性能的网络层和诠释抽象类载入中,记录和消息传递。

  • How can I get it to list all the shared calendars, and how can I get it to not include the folders that have been deleted?

  • 通过使用addSharedObject方法,将某个具体对象添加为共享对象,可以全局进行使用,以下是代码示例: public void configEngine(Engine me) { me.addSharedObject("RESOURCE_HOST", "http://res.jfinal.com"); me.addSharedObject("StrKit", new com.jf

  • 1、基本用法 Enjoy 模板引擎可以极其简单的直接使用任意的 java 类中的 public 方法,并且被使用的 java 类无需实现任何接口也无需继承任何抽象类,完全无耦合。以下代码以 JFinal 之中的 com.jfinal.kit.StrKit 类为例: public void configEngine(Engine me) { me.addSharedMethod(new com