2009-07-09 21 views
7

Boost Getting Started ürününü takip ediyorum. Bjam ile yükledim ve dosyaları ve kütüphane dosyalarını (.a, .so) görebiliyordum.Linux'ta Yükseltme kitaplığı yükleyin ve kurun

/tmp/ccJFVVid.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)': 
    test_boost2.cc:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)]+0x22): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)' 
    collect2: ld returned 1 exit status 

Benim, Windows makinenin altında tamam çalışıyordu: Ben bu komutu

g++ -I./boost/include -L./boost/lib -lboost_regex-gcc43-mt -static -o test_boost2 test_boost2.cc 

kullanarak kod yukarıda inşa ederse

#include <boost/regex.hpp> 
#include <iostream> 
#include <string> 

int main() 
{ 
    std::string line; 
    boost::regex pat("^Subject: (Re: |Aw:)*(.*)"); 
} 

bu hatayı alıyorum.

Neyin var?

gcc sürüm 4.3.2 (Debian 4.3.2-1.1)

Linux Xxxxxxxx 2.6.26-1-686 1. SMP Cum 13 Mart 18:08:45 UTC 2009 i686 GNU/Linux

cevap

8

Sorunu buldum! g ++ komut problemi! :(üzgünüm Eğer geri -l seçeneği satırın sonuna doğru hareket edersem, daha fazla şikayet etmez :)

17
sudo apt-get install libboost-regex-dev 

Çok daha akıllı bir sistemin daha iyi yapabileceği kaynaklardan yükleme yapmayın.

apt-cache search libboost | grep -- -dev 

Dislaimer:

sadece mevcut paket adlarının listesini (boost daha kısımları) almak için

g++ -lboost_regex boost.cpp -o boost 

kullanın derlemek için bunu beri Debian kullanıyorsanız varsayalım Ya GCC sürüm raporları.

+0

Çalışır! Ama en son Boost (1.39) sürümünü kurmak istersem nasıl yapmalıyım? Çünkü gerçekten kullanmak istediğim Boost.Asio kütüphanesi. :) –

+0

Eğer lenny kullanıyorsanız, 'libboost1.35-dev' kullanabilirsiniz, sıkma kullanıyorsanız, 'libboost1.38-dev' var. Ayrıca asio 'libasio-dev' bağımsız sürümü de var. Lenny versiyonları oldukça eskidir. –

+0

bağlantılı kütüphaneler derleme sonunda olmamalıdırlar mı? Bu nedenle: g ++ boost.cpp -o boost -lboost_regex – user289882

2

Sizin

-L./boost/lib 

şüpheliyi görünüyor. Boost'u oluşturduğunuzda, kütüphaneler stage/lib dizinine alınır. Ayrıca, varsayılan oluşturma işlemi statik kitaplıklar oluşturmaz, bu nedenle komut satırından -static daha iyi alırsınız. Bu sorunu çözmezse, sorunu gidermek için my blog numaralı adımları uygulamanızı öneririz.

+0

Regex'i ayrı ayrı derledikten ve sonucunu kullandıktan sonra, sadece aynı hatadır. g ++ -I./boost_1_39_0 ./boost_1_39_0/libs/regex/build/gcc/libboost_regex-gcc-1_38.a -o test_boost2 test_boost2.cc –

+0

g ++ -I./boost_1_39_0 -o test_boost2 test_boost2.cc ./boost_1_39_0/ libs/regex/build/gcc/libboost_regex-gcc-1_38.a ^ bu çalışma !!!!!! –

+1

Bunun nedeni, statik kitaplıklar için, bağlayıcıların komut satırında belirttiğiniz konum önemlidir. Yine blog gönderisine bakın. –