我放弃了链接到Xcode中的Boost Program Options,因为我无法让它工作。我想出了如何识别标题,但我对如何设置要链接到Xcode的库的路径不够熟悉。
去年我在大学里使用过Boost和Eclipse,所以如果我在这个项目中使用Eclipse,我想我能够更容易地解决它。我的程序看起来很像他们提供的示例(first.cpp)。如果您觉得需要查看源代码,我会将其加载到github。
别担心,我在/ usr / local / boost中安装了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
我在Project>下以下列方式为Boost配置了我的项目设置;属性> C / C ++一般>路径&符号: 包括:/ usr / local / boost_1_49_0 / 库:boost_program_options 库路径:/ usr / local / boost_1_49_0 / stage / 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? p>
答案 0 :(得分:2)
我已设法从指定的github存储库链接并运行您的代码。
这有点过程,因为我的进展有所不同。
首先,我重新安装了我的mac boost,如下所示。
我已经从here安装了最新的macport。
然后我安装了最新的命令行工具,因为我有xcode 4.3,并且here默认不再提供命令行工具。
之后我按如下方式安装了boost:
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
...
在此之后,我启动了XCode并创建了一个全新的项目,并将您的代码文件包含在项目中。
修改了以下设置:
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"
答案 1 :(得分:0)
以下是我如何使用shell中的普通g ++链接Linux上的Boost程序选项:
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 ++,看看它是否正确编译和链接,然后从那里开始。
答案 2 :(得分: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
(将更改dyn lib的位置)
$ otool -L /path/to/your/binary
$ /path/to/your/binary
答案 3 :(得分:0)
你试过吗
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/boost_1_49_0/stage/lib
在同一终端内启动Eclipse之前,看看它是否修复了这个错误?
贝努瓦。