2016-03-30 26 views
1

ntl kitaplıklarını kullanarak basit bir C++ programı yazdım. Programımdan statik bir kütüphane oluşturmaya çalışıyorum.Sistem kütüphanelerini kullanarak statik kitaplık nasıl oluşturulur?

g++ -Wall -g -c base.cpp -o base.o 
ar rcs libMyStaticLib.a *.o 

libMyStaticLib.a başarıyla oluşturuldu: Ben bu komutları kullanılır. Başka bir projede libMyStaticLib.a kullanıldığında Ama bu hatayı alıyorum:

g++ -o main.out main.cpp -lMyStaticLib 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libMyStaticLib.a(base.o): In function `NTL::Vec<NTL::GF2>::~Vec()': 
/usr/local/include/NTL/vec_GF2.h:43: undefined reference to `NTL::WordVector::~WordVector()' 

benim main.cpp

#include <iostream> 
#include </home/Qwer/test/base.h> 

int main() 
{ 
    baseInit(); 
    return 0; 
} 

statik kütüphane

ar rcs libMyStaticLib.a *.o -lntl 

Ama ben yaratırken ben ntl kitaplığı bağlamak deneyin Bu hatayı al:

ar: two different operation options specified 

Statik kütüphaneyi denemek ve başka bir projede kullanmak istiyorum. Bunu nasıl yapmalıyım?

cevap

1

Statik kütüphaneler (ar programı oluşturur şey bu, ve .a eki açılımı) arşivleri başka bir şey değildi nesne dosyalarının. Statik bir kütüphaneyle bağlantı kurmak, arşiv içindeki nesneler ile bağlantı kurmak gibidir. var

statik kütüphane bağlıdır diğer tüm kütüphaneler de bağlantılı olmalıdır neden:

$ g++ -o main.out main.cpp -lMyStaticLib -lntl 
+1

teşekkür ederiz. Ancak kodu ntl kütüphanesi kullanmadan derlemeliyim (envireonment buna sahip değil). MyStaticLib (veya başka bir şey) ile ntl bir yolu var mı? – user4757345

+0

@ user4757345 ntl yüklü bir sistemde kitaplığınızı oluşturduğunuz ve kütüphanenizin ntl'nin yüklü olmadığı bir sistemde mi kullanmak istediğinizi mi kastediyorsunuz? Çoğu proje bağımlılıklarını listeler ve kullanıcılarına bağımlılıkları yüklemelerini isteyin (durumunuza ntl). Bunun dışında tek çözüm, ntl'nin kütüphanedeki nesne dosyalarını ayıklayabileceğiniz ve kendinize ekleyebileceğiniz statik bir kütüphaneye sahip olmasıdır. Ancak bu çözümle ilgili lisanslama etkileri olabilir. –

+0

evet. Tüm bağımlılıkları olan bir kütüphane oluşturmak istiyorum ve diğer programcılar sadece kütüphanem değil ntl veya diğer sistem kütüphanelerini kullanmalı. Mümkün mü ? – user4757345