gpt4 book ai didi

c - 这是一个动态库链接器问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:41 27 4
gpt4 key购买 nike

我尝试编译和链接一些非常简单的 C 代码,以尝试了解静态和动态库以及 BFD 的工作原理。下面是代码片段,下面是我的问题。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "bfd.h"

unsigned int number_of_sections(bfd *abfd)
{
return bfd_count_sections(abfd);
}

int main (int argc, char *argv[])
{
bfd *ibfd = NULL;
unsigned int numSections = 0;

if (argc < 2)
{
printf("Argc < 2\n");
exit(EXIT_FAILURE);
}
else
{
bfd_init();
printf("filename = %s\n", argv[1]);
ibfd = bfd_openr(argv[1], NULL);
numSections = number_of_sections(ibfd);
printf("num sections = %d\n", numSections);
}
return 1;
}

下面是编译和链接的代码,以及错误:

make -f makefile
gcc -L. -L/usr/lib64 -L/usr/bin -g -Wall -I. -I/usr/include -o getsections ./getsections.c -lbfd -liberty -lz
./libbfd.a(plugin.o): In function `try_load_plugin':
/home/abuild/rpmbuild/BUILD/binutils-2.23.1/build-dir/bfd/../../bfd/plugin.c:170: undefined reference to `dlopen'
/home/abuild/rpmbuild/BUILD/binutils-2.23.1/build-dir/bfd/../../bfd/plugin.c:177: undefined reference to `dlsym'
/home/abuild/rpmbuild/BUILD/binutils-2.23.1/build-dir/bfd/../../bfd/plugin.c:173: undefined reference to `dlerror'
collect2: error: ld returned 1 exit status
make: *** [build] Error 1

Compilation exited abnormally with code 2 at Thu Feb 27 16:26:12

我搜索了又搜索,却找不到一个很可能是一个非常简单的问题的答案,我为我的无知提前道歉!

最佳答案

-lbfd之后添加-ldl,告诉链接器去哪里寻找缺失的函数。

关于c - 这是一个动态库链接器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22080884/

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