
Linux 시스템에서 명령을 실행할 때 버그가 발생했으며 gcc
인터넷 검색에서 사람들이 말하는 버그를 발견했는데 라이브러리의 최신 버전에서 수정되었습니다 bfd
. 더 자세히 검색해 보니 공유된 동적 라이브러리가 아니라 빌드 시 연결된 bfd
정적 라이브러리일 수 있지만 확실하지 않습니다.gcc
gcc
내가 가지고 있는 버전이 정적으로 사용되는지 아니면 동적으로 사용되는지 확인하는 방법과 bfd
의 버전은 무엇입니까 bfd
?
답변1
ld
BFD는 , gold
및 as
등을 포함하는 GNU의 Binutils를 구성하는 프로그램에서 사용되는 라이브러리입니다 . 그들은 일반적으로 다음과 같은 패키지로 제공됩니다.binutils그리고binutils-dev(데비안과 친구들) 또는binutils-devel(페도라/RHEL). 스위치 를 사용하여 앞서 언급한 프로그램 중 하나를 실행 -V
하면 버전 번호를 얻을 수 있습니다. readelf
종속성을 나열하는 데 사용할 수 있습니다 . ld
해당 유형을 포함하는 종속성을 나열하려면 다음을 수행하십시오 .
readelf -d `which ld`
Dynamic section at offset 0xc900c contains 28 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libbfd-2.22-system.so]
0x00000001 (NEEDED) Shared library: [libz.so.1]
0x00000001 (NEEDED) Shared library: [libdl.so.2]
0x00000001 (NEEDED) Shared library: [libc.so.6]
나는 GCC의 내부 작업에 대해 잘 알지 못하지만 GCC가 BFD와 연결되어 있다고 생각하는 것이 이상하다고 말하고 싶습니다.