2008-10-27 11 views
5

Ich habe keine Probleme, 1.35.0, sowie 1.36.0 auf der Timesys Arm-GCC-Toolchain, sowohl statisch (Link-Static) als auch dynamisch (.so, Standard Möglichkeit).Boost C++ Bibliotheken für gcc-arm toolchain

aber wenn ich versuche, ein einfaches Beispiel Dateisystem App zu verknüpfen:

#include <boost/filesystem.hpp> 
#include <iostream> 

namespace fs = boost::filesystem; 

int main(int argc, char *argv[]) { 
    const char* fileName = argv[1]; 
    std::cout << "file: " << fileName << " => " << fs::exists(fileName) << std::endl; 
    return 0; 
} 

bekomme ich folgende Linkerfehler:


[email protected]:~/boost/test$ /opt/timesys/at91sam9263_ek/toolchain/bin/armv5l-timesys-linux-gnueabi-gcc 
    exists.cpp -o exists.exe -I ../boost_1_35_0/ -lboost_filesystem -lboost_system -lstdc++ -L . 

/tmp/ccex3NGb.o: In function `boost::detail::atomic_decrement(int*)': 
exists.cpp:(.text._ZN5boost6detail16atomic_decrementEPi[boost::detail::atomic_decrement(int*)]+0x1c): 
    undefined reference to `__sync_fetch_and_add_4' 

/tmp/ccex3NGb.o: In function `boost::detail::atomic_increment(int*)': 
exists.cpp:(.text._ZN5boost6detail16atomic_incrementEPi[boost::detail::atomic_increment(int*)]+0x1c): 
    undefined reference to `__sync_fetch_and_add_4' 

collect2: ld returned 1 exit status 

Wer weiß, wie ich Boost-bekommen kann für die bauen gcc-arm Werkzeugkette?

Antwort

3

Sie müssen in der Datei 'boost_1_35_0/boost/config/user.hpp' hinzuzufügen:

#define BOOST_SP_USE_PTHREADS 

btw, können Sie die gcc-Tool-Kette in der Datei ‚boost_1_35_0/Tools einstellen müssen/build/v2 /user-config.jam 'zu:

using gcc 
     : arm 
     : /opt/timesys/at91sam9263_ek/toolchain/bin/armv5l-timesys-linux-gnueabi-gcc 
; 

Dies wird das Problem der Verknüpfung jetzt lösen.

3

Eine fast identische Frage wurde here auf der Boost Mailing-Liste beantwortet.