2012-04-26 39 views
1

我放棄了鏈接,以提高在Xcode程序選項,因爲我無法得到它的工作。我想出瞭如何讓頭文件被識別,但是我對如何設置要在Xcode中鏈接的庫的路徑還不夠熟悉。鏈接加速程序選項

我在大學中使用升壓和Eclipse去年,所以我想我可以把它變得更輕鬆理清,如果我只是使用了Eclipse爲這個項目。我的程序看起來很像他們提供的示例(first.cpp)。如果您覺得需要查看來源,我已在github上加載。

別擔心,我已經安裝在/ usr /本地/升壓Boost:

new-host-2:$ ls | grep program_options 
libboost_program_options.a 
libboost_program_options.dylib 
new-host-2:$ pwd 
/usr/local/boost_1_49_0/stage/lib 

我已經配置我的項目設置爲加速在以下幾個方面工程項目>屬性> C/C++常規>路徑&符號: 包括:在/ usr /本地/ boost_1_49_0/ 庫:boost_program_options 庫路徑:在/ usr /本地/ boost_1_49_0 /臺/ lib目錄

基於Eclipse的控制檯上,你會覺得它連接正確,如我最後得到這個輸出:

Building target: FizzBuzz 
Invoking: Cross G++ Linker 
g++ -L/usr/local/boost_1_49_0/stage/lib -o "FizzBuzz" ./Fizzbuzz.o ./main.o -lboost_program_options 
Finished building target: FizzBuzz 


**** Build Finished **** 

然而,當我去跑我的程序,我得到一個對話框,上面寫着:「無法啓動」無法啓動的選擇,並且沒有近期推出。

我試着在命令行中運行它,沒有運氣:

new-host-2:$ ./FizzBuzz 
dyld: Library not loaded: libboost_program_options.dylib 
    Referenced from: /Users/per001/Documents/workspace/FizzBuzz/Debug/./FizzBuzz 
    Reason: image not found 
Trace/BPT trap: 5 

如何設置這在Eclipse中正確鏈接?或者甚至更好,Xcode?

+0

你有什麼特別的原因將Boost.ProgramOptions編譯爲一個動態庫嗎?如果沒有,那麼你可以按照我的[靜態編譯指南](http://stackoverflow.com/questions/4755712/how-to-build-boost-1-45-universal-binaries/4894399#4894399),並可能拯救你自己很多麻煩。 – Mankarse 2012-05-08 08:12:29

回答

0

下面是我在Linux上使用普通的G ++從外殼鏈接升壓方案選擇:

g++ -static main.cpp -o program \ 
-I/usr/local/include/boost/ \ 
/usr/local/lib/libboost_program_options-s.a 

而在CPP源代碼,我有這包括:

#include <boost/program_options.hpp> 

我不是確定如何在Xcode中爲Eclipse添加路徑,但是您可以嘗試從shell中純粹地使用g ++來查看是否正確編譯和鏈接,然後從那裏開始。

+0

我試過了,但出現錯誤: 'new-host-2:基於類的解決方案per001 $ g ++ -static -o main -I/usr/local/boost_1_49_0// usr/local/boost_1_49_0/stage/lib/libboost_program_options.a ld:庫找不到-lcrt0.o collect2:ld返回1退出狀態 – paulrehkugler 2012-04-26 01:20:38

2

我已成功地從指定的GitHub庫鏈接並運行代碼。

這是一個過程的一點,因爲我已經着手有點不同。

首先,我已經在我的Mac升壓重新安裝如下。

  1. 我已經從here安裝了最新的macport。

  2. 然後,我已經安裝了最新的命令行工具,因爲我有xcode 4.3,並且命令行工具不再作爲默認從here發貨。

  3. 後,我已經安裝了升壓如下:

    sudo port install boost

    在這裏,所以我不得不執行下面的命令來解決這個問題我有一些問題,因爲Xcode是在不同的地方比以前:

    sudo xcode-select -switch /Applications/Xcode.app

    要驗證此做了我所執行的任務如下:

    xcode-select -print-path

    在那裏我有預期的結果:/Applications/Xcode.app

    文件的位置是在這之後如下:

    macpro:local ervinbosenbacher$ locate libboost_program_options.a 
    /opt/local/lib/libboost_program_options.a 
    
    macpro:local ervinbosenbacher$ locate program_options 
    /opt/local/include/boost/program_options 
    /opt/local/include/boost/program_options/cmdline.hpp 
    /opt/local/include/boost/program_options/config.hpp 
    /opt/local/include/boost/program_options/detail 
    ... 
    
  4. 在此之後我都推出了Xcode和創建品牌新項目並將您的代碼文件包含在項目中。

  5. 已經修改了設置如下:

    Build Settings->All->Search Paths->Always Search User Paths: Yes. 
    
    Build Settings->All->Search Paths->Library Search Paths->Debug->Any Architecture|Any SDK:/opt/local/lib 
    Build Settings->All->Search Paths->Library Search Paths->Release->Any Architecture|Any SDK:/opt/local/lib 
    
    Build Settings->All->Search Paths->User Header Search Paths->Debug->Any Architecture|Any SDK:/opt/local/include 
    Build Settings->All->Search Paths->User Header Search Paths->Release->Any Architecture|Any SDK:/opt/local/include 
    
    Build Settings->All->Linking->Other Linking Flags->Debug->Any Architecture|Any SDK: -lboost_program_options 
    Build Settings->All->Linking->Other Linking Flags->Release->Any Architecture|Any SDK: -lboost_program_options

然後,我已經成功地建立並運行的Xcode應用程序:

Allowed options: 
     --help    produce help message 
     --begnum arg   set beginning number 
     --endnum arg   set ending number 
     --fizznum arg   set fizznum (default: 3) 
     --buzznum arg   set buzznum (default: 5) 
     --fizzword arg  set fizzword (default "Fizz" 
     --buzzword arg  set buzzword (default "Buzz" 
+0

哇 - 感謝所有的辛勤工作!明天讓我試試看! – paulrehkugler 2012-05-07 03:52:12

+0

Np :)讓我知道你怎麼樣。 – ervinbosenbacher 2012-05-07 11:40:08

+0

嗯...看起來我有問題'dyld:Library not loaded:libboost_program_options。dylib 從參考:/用戶/ per001 /庫/開發商/ Xcode中/ DerivedData/FizzBu​​zz-dqvwpktqcdxeeqaupfttomlnjkiq /編譯/產品/調試/ FizzBu​​zz 原因:沒有找到圖片 (LLDB)' – paulrehkugler 2012-05-08 01:57:43

0

調整的路徑,使用install_name_tool的DYN LIB :
$ otool -L /path/to/your/binary(將列出共享庫dep)
$ install_name_tool -change libboost_foo.dylib /path/to/boost/stage/lib/libboost_foo.dylib /path/to/your/binary在同一終端內空空的Eclipse之前(將改變DYN LIB的位置)
$ otool -L /path/to/your/binary
$ /path/to/your/binary

+0

我提供這個答案的原因是,你可以運行它;您的鏈接器找不到共享庫,因此您可以使用'install_name_tool'來解決這個問題。特別是這個:'new-host-2:$ ./FizzBu​​zz dyld:Library not loaded:libboost_program_options.dylib 引用自:/Users/per001/Documents/workspace/FizzBu​​zz/Debug/./FizzBu​​zz 原因:找不到圖片痕跡/ BPT陷阱:5' – 2012-05-08 05:01:34

0

你嘗試

export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/boost_1_49_0/stage/lib 

,看看它是否修復bug ?

Benoit。