저는 Linux 프로그래밍을 처음 사용하고 BFD 라이브러리를 사용하려고합니다. 컴파일 나는 다음과 같은 명령 줄을 사용하고Linux에서 bfd.h를 사용하여 컴파일 오류
#include <bfd.h>
#include <stdlib.h>
bfd *abfd;
int main() {
bfd_init();
abfd = bfd_openr("/home/mike/Desktop/testFunc/testProg", NULL);
return 0;
}
을 :
gcc readInfo.c /usr/lib/libbfd.a -o readInfo
을 그리고 다음과 같은 오류가 점점 오전 : 이것은 현재 코드는 내가 컴파일하는 것을 시도하고있다
GCC를 readInfo.c /usr/lib/libbfd.a -o readInfo /usr/lib/libbfd.a(elflink.o) : 함수 내에 있음
elf_link_add_object_symbols': /build/buildd/binutils-2.21.53.20110810/builddir-single/bfd/../../bfd/elflink.c:4605: undefined reference to
objalloc_free_block ' /build/build d/binutils-2.21.53.20110810/builddir-single/bfd /../../ bfd/elflink.c : 4892 : 정의되지 않은 참조_sch_istable' /usr/lib/libbfd.a(elflink.o): In function
bfd_elf_size_dynamic_sections ': /build/buildd/binutils-2.21.53.20110810/builddir- 단일/BFD /../../ BFD/elflink.c : 6048 : * [모든] 오류가 1
: 신분증 1 종료를 상태 메이크업을 반환 정의되지 않은 참조 _sch_istable 'collect2 lbasename' undefined reference to
에 here을 볼 수있는 더 많은 오류 라인이 있습니다. 나는 이것에 대한 간단한 설명이있을 것이라고 확신하지만, 그것은 나를 당황하게했다.
내가 지금까지 무엇을했는지 요약하면 : 우분투의
- 설치된 정리 빌드를
- 설치된 바이너리 유틸리티 - dev에 패키지
를 설치 사용하는 경우 내가 무엇을하고 있었는지 정적으로 연결하는 것을 몰랐어요. 정적으로 링크하는 것이 이러한 오류를 일으키는 이유는 무엇입니까? –
'/ usr/lib/libbfd.so'는 그 기능의 일부로 다른 동적 라이브러리에 의존합니다. 따라서 정적 인 .a 버전은 최종 실행 파일을 링크 할 때 다른 정적 라이브러리를 필요로합니다. 정적으로 빌드하는 방법을 알아내는 데 문제가 있습니다. – sarnold
좋아. 그것이 바로 문제를 해결하기 때문에이 대답을 받아들이려고하지만 만약 당신이 결국 너무 정확하게 정적으로 컴파일하는 방법을 발견하면 당신은 매우 감사 할거야 :) –