için Tanımsız semboller Birden alt dizinleri olan bir uygulama yazıyorum. Makefile yapısı oluşturdum, böylece alt dizinler dosyayı derler ve bağlantı için ana dizine arşivler oluşturmak için "ar rvs" ve "ranlib libxxx.a" yaparlar. gcc: mimari x86_64
Ancak "ld" komutu aşağıdaki sorun haline çalışıyor. Ben Mac OS X üzerinde gcc kullanıyorumld: warning: ignoring file ./libxxx.a, file was built for archive which is not
the architecture being linked (x86_64):
./libxxx.a Undefined symbols for architecture x86_64:
10.10.1
Bu konuda birçok mesajları okuyun. Ben, o zaman ben gcc-4.9.2 yüklü ve hiçbir şans ile varsayılan gcc'nin yerine kullanmaya çalıştı
Undefined symbols for architecture i386:
i386 için aynı hatayla karşılaşırsanız "-ARCH i386 gcc" çalıştı. X86_64-apple-darwin14.0.0-g ++ - 4.9.2 kullanmayı denedim ve bu da işe yaramadı.
Yanıt için teşekkür ederiz. Ben "CC = gcc -m64" denedim ve ayrıca ld komutunu çalıştırmak için gcc kullandım.Ama sonuç aynı. Ben sadece tutarlı - eğer başka bir sebepten dolayı yaparsam çalışıp çalışmadığını görmek için -m32 seçeneğini denedim. – newprogrammer
Sorunu yeniden üreten minimal bir makefile rastlamadıkça kimse size daha fazla yardımcı olamaz. Bir MCVE ([Minimal, Tam ve Doğrulanabilir Örnek Nasıl Oluşturulur?] (Http://stackoverflow.com/help/mcve) veya SSCCE (Kısa, Kendinden İçeren, Doğru Örnek) oluşturma hakkında bilgi edinin. (http://sscce.org/)) - aynı fikir için iki isim ve bağlantı. MCVE kodunuz muhtemelen kütüphane için bir minimum kaynak dosya (ve başlık) olmalıdır (void libfunc (void) {printf ("% s adlı \ n", __func__);), ve ana program kütüphane işlevini çağırır. artı bir ya da iki makefile işlerin nasıl yapıldığına bağlı olarak, –
Teşekkür ederim. – newprogrammer