c - 如何在 makefile 中包含 *.so 文件

标签 c linux gcc x86-64 glibc

对于一个程序,我正在链接静态 glibc 库(我对其进行了修改)。我的 makefile 看起来像这样。

CXX = g++
CXXFILES = main.c

CXXFLAGS = -g -o prog -D_GNU_SOURCE
LIBS = ../../nptl/libpthread.a ../../libc.a -lpthread

all:
    $(CXX) $(CXXFILES) $(LIBS) $(CXXFLAGS)

但是,我现在想使用动态共享对象 *.so 文件,而不是使用静态 *.a 文件。将 makefile 中的 *.a 文件替换为 *.so 文件就足够了吗?如果不是这样做的正确方法是什么。我试图简单地用 makefile 中的 *.so 文件替换 *.a,但当我这样做时,程序似乎使用了原始的 glibc(而不是我修改过的)。

最佳答案

如果您不想使用标准库,您可能需要 -nostdlib 标志。另外,如果你想动态链接库,你需要告诉链接器它们在哪里。 -L/dir/containing -lc.

如果你不想在执行时设置LD_LIBRARY_PATH,你需要设置rpath-Wl,--rpath=/path/包含

关于c - 如何在 makefile 中包含 *.so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689040/

相关文章:

java - 构建单个 jar

创建 Linux 设备驱动程序。无法让驱动程序检测设备并调用探测功能

c - 实现跟踪 C 内存错误的工具,找到从哪里调用我覆盖的 malloc 等

c++ - QT make 在构建时有大量输出

c++ - 基于嵌套类型的模板函数选择

c - 在 char[][] 和 char** 中访问成员的区别

c - 如何从 ml64.exe(MSVC 64 位 X64 汇编程序)访问线程本地存储?

linux - 如何安装特定版本的gcc

c - 在C语言中,const变量可以通过指针修改吗?

c - volatile 不会阻止变量被优化