Linux programlamada yeniyim ve BFD kitaplığını kullanmaya çalışıyorum. derleme için aşağıdaki komut satırını kullanıyorumLinux'ta bfd.h kullanarak Hataları Derleme
#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
Ve şu hataları alıyorum: Bu geçerli kod ben derlemek çalışıyorum edilir
gcc readInfo.c /usr/lib/libbfd.a -o readInfo /usr/lib/libbfd.a(elflink.o): İşlev olarak
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: undefined başvuru_sch_istable' /usr/lib/libbfd.a(elflink.o): In function
bfd_elf_size_dynamic_sections ': /build/buildd/binutils-2.21.53.20110810/builddir- tek/bfd /../../ bfd/elflink.c: 6048: * [tüm] hata var 1
: ld 1 çıkış durum marka bulundu: tanımsız başvuru _sch_istable' collect2 lbasename' undefined reference to
için here görüntüleyebileceğiniz çok daha fazla hata satırı vardır. Eminim bunun için basit bir açıklama var ama bir süredir beni şaşırttı.
şimdiye kadar yaptıklarını özetlemek gerekirse: Ubuntu
- Yüklü temiz bir yapı
- Yüklü binutils-dev paketi
yüklemek kullanırsam ne yaptığımı statik bağlama olduğunu fark etmedi. Statik olarak bağlantı kurmanın neden bu hatalara sebep olmasının bir nedeni var mı? –
'/ usr/lib/libbfd.so', bazı işlevleri için diğer dinamik kitaplıklara bağlıdır. Bu nedenle, statik' .a 'sürümü, son yürütülebilir dosyanızı bağlarken diğer statik kitaplıkları da gerektirir. Gerçi statik olarak nasıl inşa edileceğini bulmakta zorlanıyorum. – sarnold
Tamam. Anında sorunu çözdüğü için bu cevabı kabul etmek istiyorum ama eğer sonunda doğru şekilde statik olarak derlemeyi bulmuş olsaydınız çok minnettar olurdum. –