【发布时间】:2013-11-26 11:29:25
【问题描述】:
大家好
虽然我是 ubuntu C 编程,但我还是个新手 对windows中的C编程比较有经验。
我最近遇到了一些编写的代码 2005 年,我有兴趣了解它们的工作原理。
这些代码需要 BOOST 库才能编译,但它们不会 在我的 ubuntu 12.04 上的最新 BOOST 版本上编译。 我将 gcc 编译器设置为 lenient 以便它忽略所有这些错误 消息。代码确实编译并在之后运行。
但是,当我使用 GDB 调试器来观察程序的流程时 我注意到程序运行的方式可能存在错误 由于使用了不同的 BOOST 版本而不是原始版本。因此 我喜欢安装我下载的代码对应的BOOST版本。
为此,我安装了 Ubuntu 5.04 和 BOOST 1.33.0,它们似乎是在 2005 年末创建的。我下载了它 但我没有找到有关如何安装它的任何详细说明。 关于使用 BOOST jam 的唯一模糊描述,我玩过 BOOST 卡了很长一段时间没有成功。 而且这个旧的 BOOST 没有像这样的安装命令 “sudo apt-install boost-dev”样式选项
因此我想问是否有人可以提供易于理解的分步说明 关于如何安装从上述链接下载的 BOOST 库。 喜欢.....
- 第一步:从 boost 网页下载 boost jam
- 第二步:在 home/boost/ 中解压,然后输入 make configure
...等等...
非常感谢您提供任何有用的信息。
此处添加新内容 响应给定的cmets
您好,我浏览了您的链接提供的信息,然后 设法运行您的链接给出的boost库示例。 也就是我可以用命令编译单个cpp文件
g++ -I boost_1_33_0 test.cpp -o test
(我将 boost 库和要编译的 cpp 文件保存在 同一个文件夹)
但是,我感兴趣的程序包是使用 make(而不是 cmake)构建的。 我有一些编写 cmake 文件但没有编写文件的经验。 而且我在 make 文件中看不到任何指向 boost 库命令的链接 程序包。自述文件只有一句话说我 需要安装 boost 而不解释这是什么意思。
我认为这意味着要么我必须构建并执行 makeinstall the boost 要么 我可以在 makefile 中添加一些行作为链接。我想 也许您可以快速指出 makefile 中缺少的内容。
自述文件:
要编译,进入 moses 目录并执行“make”。你需要 最新的 boost 库。如果由于奇怪的原因编译仍然失败, 您可以尝试使用 -fpermissive 的 g++(较新的版本拒绝很多 旧代码没问题的代码)。如果你要制作 经常更改和重新编译,您可能需要禁用 -O3 在 makefile 中(我大量使用模板,所以 -O3 确实加快了速度 代码,但确实会减慢编译速度)。
还有makefile:
CC = g++
PROJ_NAME = moses
LINK_FLAGS = -Wall -Iutils/ -Itrees/ -Irewrite -I./ -Imodeling/ -Ifitness/ \
-Ialignment/ -Isim/ -Ilocal/ -O3
COMP_FLAGS = -Wall -Wno-sign-compare -Iutils/ -Itrees/ -Irewrite -I./ \
-Imodeling/ -Ifitness/ -Ialignment/ -Isim/ -Ilocal/ -O3
src := $(wildcard *.cc) $(wildcard utils/*.cc) $(wildcard trees/*.cc) $(wildcard modeling/*.cc) $(wildcard fitness/*.cc) $(wildcard alignment/*.cc) $(wildcard main/*.cc) $(wildcard rewrite/*.cc) $(wildcard sim/*.cc) $(wildcard local/*.cc)
obj := $(patsubst %.cc,%.o,$(src))
all: $(PROJ_NAME)
%.o: %.cc
$(CC) $(COMP_FLAGS) $< -c -o $@
$(PROJ_NAME): $(obj)
$(CC) $(LINK_FLAGS) $^ -o $(PROJ_NAME)
run:
$(PROJ_NAME)
clean:
find -regex ".*~\|.*\.o"|xargs rm -f
rm -f $(PROJ_NAME)
rm -f $(PROJ_NAME).exe*
depend:
makedepend -Y -- $(COMP_FLAGS) -- $(src)
utils/exceptions.o: utils/exceptions.h utils/utils.h
utils/io_util.o: utils/io_util.h utils/tree.h utils/basic_types.h
# ......lots more lines like that.........
【问题讨论】:
-
您需要需要为您的项目编译的库,还是只需要模板库?因为在第一种情况下,您可以忽略 boost 编译。否则,请查看 boost.org/doc/libs/1_35_0/more/getting_started/…,这是更新的文档。
-
非常抱歉回复晚了!我没有收到对我的问题发表评论的通知,也没有意识到我得到了回复。简单来说就是我感兴趣的软件包是用cmake编译的。当我在文件夹 bin 中键入 cmake.. 时,系统通知我 boost 丢失。我想这是你回复的第一个案例?我会检查你发送的信息。但请告诉我其他可能有用的信息
-
缺少什么?头文件或库?也许你应该在 cmake 中放置一些变量来指定头文件和库路径。
-
缺少标题,很多。我检查了您发送的信息链接。我也许可以自己运行它。我会尽快更新这个页面,我得到了一些结果。再次,非常感谢您的回复。
-
你好,我把我的回答放在问题部分,评论部分太长了