2008-10-27 13 views
5

No tengo problemas para compilar 1.35.0, así como 1.36.0 en el toolys de times-arm-gcc, tanto estáticamente (link-static) como dinámicamente (.so, default opción).Bibliotecas de Boost C++ para gcc-arm toolchain

Sin embargo, cuando trato de vincular una aplicación simple muestra de sistema de archivos:

#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; 
} 

me sale el siguiente error de vinculador:


[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 

¿Alguien sabe cómo puedo conseguir Boost construir para el gcc-arm toolchain?

Respuesta

3

es necesario agregar en el archivo 'boost_1_35_0/impulso/config/user.hpp':

#define BOOST_SP_USE_PTHREADS 

por cierto, es necesario establecer el gcc-herramienta de la cadena en el archivo 'boost_1_35_0/herramientas/construcción/v2 /user-config.jam' a:

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

Esto va a resolver el problema de vincular ahora.

3

Una pregunta casi idéntica fue respondida here en la lista de correo de Boost.

Cuestiones relacionadas