2016-04-06 32 views
0

'da bir statik kitaplığı bir statik lib'e nasıl bağlarım? Eclipse (Hello World projesine bağlı olarak) bir Yocto autotools projesi oluşturdum.Eclipse

Kodumu birkaç sayıda lib'le ayırmak ve sonra bunları projeme statik libs (.a) biçiminde bağlamak istedim.

Artık tek bir uygulamamız ve bir dizi statik kitap var. Bununla birlikte, ne denediğime bakmadan kodumu derlemek için alamıyorum. Her ayrı bir lib derler ve bir .a dosyası üretir, ancak benim app yapmaz.

olası bir çözüme sahip web arama yaptıktan sonra - benim statik kütüphanelerini doğrudan bir bağlantı ekleyin:

MyApp_CPPFLAGS="-I$LOCATION" 
MyApp_LDADD="/home/xxx/workspace/MyApp/Encoding2/Debug/libEncoding2.a" 

Bu libEncoding2.a bu yolda var benim Makefile.am dosyasıdır.

alıyorum hatadır: Bir marka deneyin bile neden gerekli olduğu emin değilim bu yüzden

make[2]: *** No rule to make target `"/home/xxx/workspace/MyApp/Encoding2/Debug/libEncoding2.a"', needed by `MyApp'. Stop. 

Zaten lib inşa.

Herhangi bir yardım için teşekkür ederiz.

cevap

0

libtool kullanıp kullanmayacağınıza bağlı olarak, sırasıyla noinst_LTLIBRARIES veya noinst_LIBRARIES hedef listeniz olmalıdır. Bu kitaplığın adını içerir sadece gerektiği (libEncoding2.la veya libEncoding2.a.) Yani ne aradığınız olduğunu

Bunun için tam yol kullanmak asla ve değil alıntı değişkenleri olun gerektiğini

MyApp_CPPFLAGS = -I$LOCATION 
MyApp_LDADD = libEncoding2.la # or .a 

Ve bu işe yarar.

Fakat diğer yandan, autotools'un nasıl çalıştığını anlayabilmeniz için biraz zaman ayırmanız gerekiyor gibi görünüyor. Bir tane tuzla, Autotools Mythbuster'u başlangıç ​​noktası olarak alabilirsiniz. Eğer tariflerde statik kütüphane kullandığından

0

, kendi statik kütüphaneye bağlamak için aşağıdaki komutu kullanarak, merhaba dünya-0.1, yani proje kaynak klasöründe kütüphaneye yumuşak bağlantısını yapabilir

ln -s /home/xxx/workspace/MyApp/Encoding2/Debug/libEncoding2.a 

ve sonra

proje derlemek için takip komutunu kullanarak URL'ye

SRC_URI = " \ 
    file://libEncoding2.a \ 
    file://hello-world.c \ 
" 

ve do_compile bloğunda kaynak yolunu ekleyerek, bb dosyasını, hello-world_0.1.bb düzenlemek

Eğer proje

bitbake hello-world 

bitbake ve mkefidisk.sh çalıştırdıktan sonra, /usr/bin/Hello/hello-world içinde hello-world bulabilirsiniz. Umarım bu ipucu size yardımcı olabilir.

BTW, Ben autotools aşina değilim, sadece tarifleri bitbake yapmak için make kullanın.Ve statik kütüphaneniz de Eclipse'de değil Yocto'da yaratılmalıdır. Bu yüzden statik kütüphane için yolunuzun belki de doğru olmadığını düşünüyorum, ~/yocto/build/tmp/... ya da bunun gibi bir yer bulmak gerekir. Benim durumumda, hedef ortamınıza bağlı olarak ln -s ~/yocto/build/tmp/sysroots/intel-corei7-64/usr/lib/libEncoding.a bulundu.