为什么尽管有-nostdlib却仍依赖libc

问题描述

在共享库的构建过程中,我想控制对libc的依赖。

因此,我在命令行中引入了-nostdlib(使用clang 8或gcc 9;这是相同的。)

如果我不将我的库链接到其他共享库(例如libossp-uuid),则该方法有效。

但不能使用-lossp-uuid。

cc -fPIC -shared -nostdlib -olibmain.so   main.c -L/usr/local/lib -lossp-uuid -I/usr/local/include

ldd显示了对libc.so.7的依赖。

ldd ./libmain.so
./libmain.so:
        libossp-uuid.so.16 => /usr/local/lib/libossp-uuid.so.16 (0x80066f000)
        libc.so.7 => /lib/libc.so.7 (0x80024a000)

问题是为什么我不能。有解决方法吗?

非常感谢您提出任何明智的建议。 这对我来说是个很大的谜。

解决方法

依赖关系似乎源于libossp-uuid.so.16。您还必须使用-nostdlib构建该库。