有关连接的规则正被 j笑。
我有这份少许的文件,我想变成一个共享的图书馆。 为说明起见,Im打上libuv
功能,但它同样也可以从任何图书馆打电话。
// func.c
#include <uv.h>
int func(void) {
uv_close(NULL, NULL);
return 0;
}
我将其汇编成一个共享的图书馆;我注意到我与<条码>libuv<>/代码>没有联系。 提供<代码>-luv 国旗至cc
:
$ cc -fpic -g -c func.c
$ cc -shared -o libfunc.so func.o
$ ldd ./libfunc.so
statically linked
$
我不理解“法定联系”产出实际上意味着什么——我认为我这样通过具体说明<条码>共享<<><>/条码>,创造了一种共同的平衡(而不是静态的平衡)。
不管怎样,为了让大家感觉到事情,我接下来试图创造我共同的平衡,明确连接<条码>libuv<>:>:
$ cc -fpic -g -c func.c
$ cc -shared -o libfunc.so func.o -luv
$ ldd ./libfunc.so
linux-vdso.so.1 (0x00007ffe2b39a000)
libuv.so.1 => /lib/x86_64-linux-gnu/libuv.so.1 (0x00007f012d6d0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f012d4a7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f012d710000)
$
www.un.org/Depts/DGACM/index_spanish.htm 请解释在创建<条码>libfunc.<>>>的两种不同“方法”之间发生的情况。 共享图书馆: 为什么在<条码>上添加<代码>-luv,<>条/代码>的旗帜导致通过<条码>ldd创建/确认这些附属地? 另外,第一种版本(没有<代码>-luv)为什么甚至可行? 我认为,我正在利用另一个图书馆的功能obliged me,在连接期间提供正确的-l
论点,也就是说,我认为,试图创建共享的图书馆而没有<>>>/m>具体规定-luv
是失败的。
最新消息:继对JohnBollinger的评论之后,我重复了“条码”-fpic 链接指令的旗帜,但似乎没有影响观察到的行为:
$ cc -fpic -g -c func.c
$ cc -fpic -shared -o libfunc.so func.o
$ ldd ./libfunc.so
statically linked
$
$ cc -fpic -g -c func.c
$ cc -fpic -shared -o libfunc.so func.o -luv
$ ldd ./libfunc.so
linux-vdso.so.1 (0x00007fff043f0000)
libuv.so.1 => /lib/x86_64-linux-gnu/libuv.so.1 (0x00007fea17963000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fea1773a000)
/lib64/ld-linux-x86-64.so.2 (0x00007fea179a3000)
$
更新:我的<代码>gcc/code>/> cc<>/code>和
ld
版本:
$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ cc --version
cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ ld --version
GNU ld (GNU Binutils for Ubuntu) 2.38
Copyright (C) 2022 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
$
Mylav distro, fwiw, 即乌班图·WSL, 释放jammy:
$ uname -a
Linux US193F98B0DB51 5.15.133.1-microsoft-standard-WSL2 #1 SMP Thu Oct 5 21:02:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
$
I assumed:我主持世界语言学会的工作是毫不相干的,但“JohnBollinger”不能照搬我对RHEL/Centos 8的结果,我对一切都不清楚。 我无法使用物理的六氯环己烷箱来比较那里的行为。
在“DarkSoda”查询后,似乎两种版本的<代码>libfunc.so。 (在连接期间,与<代码>-luv和>无)相同:
$ cc -fpic -g -c func.c
$ cc -fpic -shared -o libfunc.so func.o
$ ls -l ./libfunc.so
-rwxr-xr-x 1 user user 20528 Jan 11 18:53 ./libfunc.so
$
$
$ rm -f ./func.o ./libfunc.so
$
$ cc -fpic -g -c func.c
$ cc -fpic -shared -o libfunc.so func.o -luv
$ ls -l ./libfunc.so
-rwxr-xr-x 1 user user 20528 Jan 11 18:53 ./libfunc.so
$