2012-06-20 14 views
23

içinde` ana tanımsız başvuru 'Linuxcrt1.o: işlev `_start olarak: - Linux

için

Solaris bir uygulama taşıma am bağlı nesne dosyaları bir ana() gibi tanımlanmıştır gerekmez. Ancak derleme ve bağlama Solaris'te düzgün bir şekilde yapılır ve yürütülebilir dosya oluşturulur. Linux'ta My sorundur

/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 

, ben onun büyük bir uygulamadan yana yeni .c/.o dosyaları içeremez ve yıllarca çalışmakta olduğu bu hatayı alabilirsiniz. Bu hatayı nasıl kurtarabilirim? makefile'daki

Kod extractes:

RPCAPPN = api 
LINK = cc 

    $(RPCAPPN)_server: $(RPCAPIOBJ) 
      $(LINK) -g $(RPCAPIOBJ) -o $(RPCAPPN)_server $(IDALIBS) $(LIBS) $(ORALIBS) $(COMMONLIB) $(LIBAPI) $(CCLIB) $(THREADLIB) $(DBSERVERLIB) $(ENCLIB) 
+0

Makefile ve/veya asıl derleme komutlarını gönderir misiniz? –

+0

Evet .. Makefile'den birkaç satır ekledim. – Blackforest

+0

Basit: ya ana çağrıyı kesmeyi bırakırsınız ya da bir ana tanımlarsınız (^) Neden solaris üzerinde çalışır? Özel bağlayıcı bayraklara sahip (paylaşılan nesneye bağlantı?) – wildplasser

cevap

23

deneyin gcc documentation itibaren yani

$(LINK) -nostartfiles -g ... 

, sizin bağlayıcı seçeneklerine -nostartfiles ekleyerek:

-nostartfiles 
    Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used. 

Bu crt1.o neden olur bağlantılı olduğu değil (normalde varsayılan olarak bağlıdır) - normalde sadece kendi _start kodunu uyguladığınızda kullanılır. Bir o kadar

+3

konuya bağlı olarak, o zaman bu gerçekten bir çözüm değil - Destek testi projesini yapmaya çalışırken benzer bir sorun yaşadım ve bu bayrağı daha da kötüleştiren her şeyi ekledim – serup

13

-shared bağlantı seçeneği eklemek gerekir ve ben bir deklarasyon eksik olduğunu ortaya çıktı:

#define BOOST_TEST_MODULE <yourtestName> 
+2

Bu aslında, yukarıdaki hatayla daha önce başarısız olan bir R paketinin kurulmasına yardımcı oldu. – Thomas

+0

Anlaşmalı; Bu ayrıca sqlite için harici işlevlerin derlenmesiyle ilgili bir sorun yaşamaya da yardımcı oldu. – gregory

1

Ben artırma ile yeni bir test projesi inşa etmeye çalışırken benzer bir sonuç vardı uyulması zaman

0

Benim için bu hata, bir dize değişmezinde ham UTF-8 karakterleri kullanıldığında görünür. ARM7HL, Sailfish OS, GNU C++.