gpt4 book ai didi

linux - 在没有 libc 的情况下编译共享对象文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:50 25 4
gpt4 key购买 nike

是否可以在不使用 libc 的情况下在 Linux 上构建共享目标文件?我尝试使用 -nostdlib 构建共享对象,它提示内置函数“memset”存在类型冲突(我在尝试构建的共享对象中定义了我自己的函数版本)。

我没有使用共享对象文件中的任何 libc 函数。我正在构建共享对象,如下所示:-

CC      = gcc
CFLAGS = -Wall -Wextra -Werror -nostdlib
OUTPUTDIR = ./build
test: outputdir
$(CC) $(CFLAGS) -c -fPIC test.c -o ${OUTPUTDIR}/test.o
$(CC) $(CFLAGS) ${OUTPUTDIR}/test.o -shared -o ${OUTPUTDIR}/libtest.so

outputdir:
mkdir -p ${OUTPUTDIR}

clean:
rm -rf ${OUTPUTDIR}

最佳答案

如果您链接 -nostdlib ,您还应该使用 -ffreestanding 进行编译和/或 -fno-builtin

您还必须注意不要引用 libc.so.6不链接 glibc 的符号。从表面上看,事情似乎可以正常工作,但它往往会在某些环境中引入破坏,尤其是在将额外的 IFUNC 添加到 glibc 时。 ( Intel did that with the ICC 16 compiler library. )

关于linux - 在没有 libc 的情况下编译共享对象文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46894958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com