2010-09-27 19 views
36

aşağıdaki program oluşturmaya çalıştığınızda aşağıdaki bayraklarıyla, OS X 10.6.4 tarihindeld: kütüphane gcc/clang -static bayrağıyla OSX 10.6 üzerinde -lcrt0.o için bulunamadı

#include <stdio.h> 

int main(void) 
{ 
    printf("hello world\n"); 
    return 0; 
} 

:

ld: library not found for -lcrt0.o 
collect2: ld returned 1 exit status 

başkasının bu karşılaştı, yoksa başka hiç kimse henüz etkilenen bir şeydi: Bu döndürür

gcc -static -o blah blah.c 

? Herhangi bir düzeltme var mı?

Teşekkürler

cevap

46

Bu işe yaramaz. gcc için man sayfasından:

Bu seçenek (libgcc.a dahil) tüm kütüphaneler de -static ile derlenmiş sürece Mac OS X üzerinde çalışmaz. Ne libSystem.dylib'nin ne de crt0.o'nun statik bir sürümü sağlanmadığından, bu seçenek çoğu insan için kullanışlı değildir.

+0

Teşekkürler. Benim için yararlıdır çünkü tersine mühendislik ile ilgileniyorum: P – browneye

+1

@browneye - sabit olmadan makinede nasıl tersine mühendislik yapılacağını anladınız mı ??? – triple

0

Ayrıca LLVM EUE bağlayıcı deneyebilirsiniz - Benim iki büyük işletim sistemleri için önceden oluşturulmuş versiyonunu yaptı - https://github.com/VerKnowSys/Sofin-llds

Bu seferki exmple için bağlantı vermek beni tanır: Düzgün "Qemu" - tarafından önceden yüklenmiş ld ile imkansızdır Elma.

Ve sonuncusu - GCC'yi libstdC++ (yok) ile oluşturmak.

+0

Ayrıca bahsetmeye değer - LLVM 3.9 kendisini derlenmiş libC++ ile - bağlayıcıya iletilen "-static -lC++" desteğini gerektirebilir. – dmilith