2013-10-29 39 views
0

我下載了libboost1.50 - 所有這些都在Raspberry Pi中,並且已成功編譯並使用線程執行程序。 CMake也發現了圖書館。然後我複製升壓的庫和其包括從/ usr/lib中和/ usr /包括/升壓分別爲C:\升壓,使得層級變爲:CMake無法在我的主機中找到用於交叉編譯器的boost庫,但在Raspberry Pi中找到

C: 
    -> Boost 
     -> lib 
     ... files 
     -> include 
     -> boost 
      ... files 

我然後使用相同的的CMakeLists.txt和源代碼,但沒有找到庫。

注意:我使用的交叉編譯器已經完全工作,我可以使用std庫在Cygwin中生成一個可執行文件。我甚至指定了庫和用戶以及根的位置。

有什麼我錯過了嗎?

cmake_minimum_required(VERSION 2.8) 

set(BOOST_ROOT C:/Boost/) 
set(BOOST_INCLUDEDIR C:/Boost/include/) 
set(BOOST_LIBRARYDIR C:/Boost/lib/) 

SET(Boost_DEBUG ON) 
find_package(Boost 1.50.0 COMPONENTS thread system) 

if (Boost_FOUND) 
    include_directories (${Boost_INCLUDE_DIRS}) 
    add_executable (thread thread.cpp) 
    target_link_libraries(thread ${Boost_LIBRARIES}) 
endif() 

enter image description here

+0

不確定這是否相關:是否可能是因爲Boost的自動鏈接阻礙了它?請參閱http://stackoverflow.com/a/9256902/417197或http://stackoverflow.com/a/6469314/417197。 –

回答

1

使用CMake的-GUI,然後檢查是否檢測到您的Boost庫。如果沒有,則在CMAKE-GUI中手動設置並再次配置。

0

暫時解決方案,我能夠來!

由於交叉編譯能夠將源代碼鏈接到libstdC++,因此我放置了boost lib並將其包含到交叉編譯器的安裝位置。

庫被放在這裏:

C:\cygwin\opt\cross\x-tools\arm-unknown-linux-gnueabi\arm-unknown-linux-gnueabi\sysroot\lib 

包含文件放在這裏:

C:\cygwin\opt\cross\x-tools\arm-unknown-linux-gnueabi\arm-unknown-linux-gnueabi\include\c++\4.6.3 

的CMakeLists內容是像現在如下:

cmake_minimum_required(VERSION 2.8) 
add_executable (thread main.cpp) 
target_link_libraries(thread boost_thread boost_system) 

打開Cygwin的終端和在那裏調用cmake,然後make。中提琴!它現在編譯成功! :>

的奇妙之處在於這裏:

target_link_libraries(thread boost_thread boost_system) 

我發現這個在這裏的問題在哪裏#1有人說手動鏈接庫的..

即使它的工作,爲什麼CMake無法在Windows(Cygwin終端)和Linux(VMware)中檢測到boost庫 - 我嘗試了這些庫 - 但是該庫在Raspberry Pi(Raspbian)中使用相同的CMakeLists.txt和main.cpp 。 CMake的目的不是找到庫本身嗎?如果我只是手動鏈接它們,那麼最好這樣做:

arm-unknown-linux-gnueabi-g++.exe -lboost_thread -lboost_system