linux - gcc 生成具有执行权限的共享对象

标签 linux gcc shared

我正在使用 gcc 在 Linux 上构建一个共享库。我没有收到任何编译或链接错误,但我的共享对象始终设置了执行位(尽管 readelf 指示它是一个共享对象)。我只是这样做:

> echo "int f() {return 1;}" > a.cpp
> gcc -c a.cpp
> gcc -shared -o liba.so a.o
> ls -l liba.so
-rwxr-xr-x 1 me me 6652 2011-06-09 17:05 liba.so

为什么共享对象会设置执行位?

最佳答案

因为通常你可以执行共享库。大多数共享库在执行时会崩溃,但您可以执行它们。

一些库定义了入口点(-Wl,-e,the_name_of_your_entry_point,标准 C 程序中的主要函数),然后您可以在不发生崩溃的情况下执行它们。

关于linux - gcc 生成具有执行权限的共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299395/

相关文章:

python - 如何让apache在Flask webapp上提供静态文件

C++ GCC - 无法包含 ctime、cstring 或 cstdlib

c++ - Makefile c++11 支持

c# - Outlook Mapi 访问共享联系人

android - 共享库可以调用另一个共享库吗?

c - 在用户空间应用程序中使用自旋锁

c - linux 内核 - pte_xxx() API 在模块编程中不起作用

linux - 从文件中读取数字直到第 < n 行

xcode - 强制静态链接链接到 Xcode 目标的库?

python - 共享主机上的 Django 站点出现问题