2013-11-26 83 views
0

Gooday大家无法安装旧的2005年Boost库

我是相当新的Ubuntu的ç编程虽然我 而经历了用C编程的窗口。

我最近遇到了2005年编写的一些代码 ,我很想了解它们是如何工作的。

这些代码需要BOOST库进行编译,但他们不会 编译我的Ubuntu 12.04上最新的BOOST版本。 我在宽松的情况下设置了gcc编译器,以便它忽略所有这些错误 消息。代码确实编译并在之后运行。

然而,当我用GDB调试器来收看节目如何流动 我注意到,有在途中因使用不同版本的BOOST,而不是它的原始可能错误的程序运行 。因此 我喜欢安装与我下载的代码相对应的BOOST版本。

为此,我安装了Ubuntu 5.04和BOOST 1.33.0,它似乎是在2005年年底创建的。我将它下载到了 ,但是我没有找到有关如何安装它的任何详细说明。 关于使用BOOST果酱的模糊描述,我在BOOST 果酱上玩了很长时间,但都没有成功。 ,这所老BOOST没有安装命令,如 “sudo易于安装升压-dev的”样式选项

因此,我想问一下,如果有人可以给一个容易理解如何安装一步一步指令 从上面的链接下载BOOST库。 像.....

  • 第一步:从提升网页下载升压果酱
  • 第二步:解压缩在家庭/升压/然后键入使配置

...等等。 ..

非常感谢任何有用的信息。这里 响应追加到给定

喜的评论

新的内容,我通过你的链接和 给出的信息去管理运行由你给出的链接Boost库的例子。 也就是说,我可以编译单个cpp文件与命令

g++ -I boost_1_33_0 test.cpp -o test 

(我让Boost库和cpp文件中 同一文件夹进行编译)

但是,程序我感兴趣的包是用make(而不是cmake)构建的。 我有一些写cmake文件的经验,但没有制作文件。 而且我没有看到任何链接来提升 程序包的make文件中的库命令。自述文件只有一个句子,表示我需要在不解释含义的情况下安装增强版本。

我认为这意味着要么我必须建立并做makeinstall提升或 我可以在makefile中为链接添加一些行。我认为 也许你可以快速指出makefile中缺少的东西。

自述文件:

进行编译,进入摩西目录和做“做”。您需要最新的增强库 。如果编译仍然不能解决怪异的原因, 你可以试试G ++与-fpermissive(新版本拒绝许多 代码是确定与旧的)。如果你将要作出改变 和重新编译频繁,你可能会想禁用-O3 在生成文件(我使用模板宽松,所以-O3真正加快 的代码,但实际上会减慢编译)。

而生成文件:

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 [email protected] 

$(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......... 
+0

您是否需要需要为项目编译的库,或仅需要模板库?因为在第一种情况下你可以忽略boost编译。否则,请查看http://www.boost.org/doc/libs/1_35_0/more/getting_started/unix-variants.html,这是一些更新的文档。 – Jepessen

+0

非常抱歉迟到的回复!我没有收到我的问题的评论通知,并没有意识到我得到了答复。简而言之,我感兴趣的软件包是用cmake编译的。当我在文件夹bin中输入cmake ..时,系统通知我缺少提升。我认为这是你回复的第一个案例?我会检查你发送的信息。但请告诉我可能有什么用 – user3036152

+0

缺什么?头文件或库?也许你应该把一些变量放在cmake中,指定头文件和库路径。 – Jepessen

回答

1

我有一个旧的指令飞行在这里为升压1.34.1,其内容是这样的(具体项目的东西切掉):

  • 解包升压源
  • cd转化为tools/jam/src
  • 运行./build.sh打造bjam
  • cd到主源代码目录
  • tools/jam/src/bin.linux/bjam threading=multi --layout=system --toolset=gcc --without-python variant=release --prefix=/usr/local install

为目标系统不具备--without-python必须安装Python,这引起了构建以乱七八糟失败。

很明显,你可以/需要单独设置(如线程支持,发布与调试版本)摆弄,以满足您的需求,但它应该是一个很好的起点。

如果您需要ICU支持(Boost.Regex和Boost.Locale),它变得更加复杂......

注意,构建过程已改变多年来;你不应该使用相同的程序来更新最新的升级版本。这正是我当时使用的。

编辑:

至于你的问题的第二部分,文件也不需要查证增压安装在标准系统目录提振明确

你不必为自动搜索声明-I /usr/include进行编译;链接期间-L /usr/lib也是如此。

的Makefile文件的作者复制的编译器标志到连接标志逐字并不能真正帮助intuitivity无论是事实...;-)

如果您在自定义目录(仅限标题或在我的构建指令的--prefix选项中声明自定义目录)中有Boost,则需要进行以下修改(查找“boost” ):

LINK_FLAGS = -Wall -Iutils/ -Itrees/ -Irewrite -I./ -Imodeling/ -Ifitness/ \ 
      -Ialignment/ -Isim/ -Ilocal/ -L /path/to/boost/libs -O3 
COMP_FLAGS = -Wall -Wno-sign-compare -Iutils/ -Itrees/ -Irewrite -I./ \ 
      -Imodeling/ -Ifitness/ -Ialignment/ -Isim/ -Ilocal/ \ 
      -I /path/to/boost/includes -O3 

这应该做的伎俩。由于Makefile不链接任何Boost二进制文件(例如-l boost_program_options或其他),因此它似乎只使用了Boost 标头,这将使-L /path/to/boost/libs部分(实际上是上面详述的整个编译步骤)多余。您应该能够简单地解压源代码并使用-I /path/to/boost/headers将头文件目录作为附加包含目录。

+0

万岁!我试图让它运行!感谢千指令!希望这也能帮助别人。我有一个最后的问题,为了放入GDB的调试标志,我在哪里放置'-g'标志?它是否正好在make文件的第一行后面,如:“CC = g ++ -g”?顺便说一句:与我使用的BOOST_1_33_1的唯一区别是build.sh脚本和bjam位于不同的文件夹中。并且在编译期间,线程= multi给系统'不知道如何做'。 – user3036152