C 向我解释这两个步骤,它们用于创建共享库
我完成了这些步骤并创建了共享库。 但这里我有一些问题 我想知道为什么我们要写4步和5步 我只知道这些步骤用于链接库 在第六步中,为什么我们只使用卢夫曼而不是利伯夫曼 步骤:C 向我解释这两个步骤,它们用于创建共享库,c,linux,shared-libraries,C,Linux,Shared Libraries,我完成了这些步骤并创建了共享库。 但这里我有一些问题 我想知道为什么我们要写4步和5步 我只知道这些步骤用于链接库 在第六步中,为什么我们只使用卢夫曼而不是利伯夫曼 步骤: 1 gcc -c -fPIC filebits.c -o filebits.o 2 gcc -shared -Wl,-soname,libhuff.so.1 -o libhuffman.so.1.0.1 filebits.o 3 mv libhuffman.so.1.0.1 /home/mydesktop/slib/ 4 l
1 gcc -c -fPIC filebits.c -o filebits.o
2 gcc -shared -Wl,-soname,libhuff.so.1 -o libhuffman.so.1.0.1 filebits.o
3 mv libhuffman.so.1.0.1 /home/mydesktop/slib/
4 ln -sf /home/mydesktop/slib/libhuffman.so.1.0.1 /home/mydesktop/slib/libhuffman.so
5 ln -sf /home/mydesktop/slib/libhuffman.so.1.0.1 /home/mydesktop/slib/libhuffman.so.1
6 gcc -o app app.c -lhuffman
7 ./app
请向我解释以下步骤在构建库时,链接器选项错误:
-Wl,-soname,libhuff.so.1
应该是
-Wl,-soname,libhuffman.so.1
从:
-soname=名称
[…]运行可执行文件时,动态链接器将尝试加载DT_SONAME字段指定的共享对象,而不是使用给定给链接器的文件名
构建库时,链接器选项错误:
-Wl,-soname,libhuff.so.1
应该是
-Wl,-soname,libhuffman.so.1
从:
-soname=名称
[…]运行可执行文件时,动态链接器将尝试加载DT_SONAME字段指定的共享对象,而不是使用给定给链接器的文件名
在步骤4中,您将创建指向库名称的软链接,链接器将查找该库名称以进行链接。
在步骤5中,您将创建指向库的软链接,指示其主要版本。您无需遵循这些步骤,而是可以生成libhuffman.so作为第一步中的输出,这是链接器查找的内容。但遵循这一惯例,可以很容易地跟踪库的主要版本和次要版本。通常,库的名称为library\u name.MAJOR\u VERSION.MINOR\u VERSION。有一个以library\u name.MAJOR\u VERSION的形式的软链接&另一个只有library\u name的软链接。库名称的格式为lib[library\u name]。因此,这是使用-l选项时链接器所期望的格式。您可以检查Linux PC上的库,您将看到在许多情况下遵循此约定。这提供了一些有关这方面的细节
2.in 6th step why we use only lhuffman insted of libhuffman
希望这有帮助
在步骤4中,您将创建指向库名称的软链接,链接器将查找该库名称以进行链接。
在步骤5中,您将创建指向库的软链接,指示其主要版本。您无需遵循这些步骤,而是可以生成libhuffman.so作为第一步中的输出,这是链接器查找的内容。但遵循这一惯例,可以很容易地跟踪库的主要版本和次要版本。通常,库的名称为library\u name.MAJOR\u VERSION.MINOR\u VERSION。有一个以library\u name.MAJOR\u VERSION的形式的软链接&另一个只有library\u name的软链接。库名称的格式为lib[library\u name]。因此,这是使用-l选项时链接器所期望的格式。您可以检查Linux PC上的库,您将看到在许多情况下遵循此约定。这提供了一些有关这方面的细节
2.in 6th step why we use only lhuffman insted of libhuffman
希望这有帮助 对不起,我忘了这件事。。thanx抱歉我忘了这件事。。谢谢你