在Linux上设置链接库

时间:2013-04-08 08:09:28

标签: c++ ubuntu libraries

在Linux上开发对我来说是新的,我在设置环境时遇到了麻烦。我有一个相对较小的程序,它依赖于以下库:

-lboost_date_time -lboost_regex -lmysqlclient -lmysqlcppconn -lexpat

我在Ubuntu 12.04 LTS上使用eclipse。我需要对包管理器做什么,并在eclipse中成功编译?有人告诉我使用sudo apt-get libboost*,但这会打印出一大堆冲突,然后得出令人沮丧的结论:

E: Unable to correct problems, you have held broken packages.

我认为我正确安装了libmysqlcppconn-devlibexpat1-dev。 我在eclipse中唯一做的就是将-l东西添加到链接库设置中。

总而言之,操作系统和IDE对我来说都是新手,我希望得到详细的帮助。

从下面的终端转储:

libboost-dev is already the newest version.
libboost-iostreams1.46.1 is already the newest version.
libboost-iostreams1.46.1 set to manually installed.
libboost-serialization1.46.1 is already the newest version.
libboost-serialization1.46.1 set to manually installed.
libboost1.46-dev is already the newest version.
libboost1.46-dev set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libboost-date-time1.48-dev : Conflicts: libboost-date-time1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-filesystem1.48-dev : Conflicts: libboost-filesystem1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-graph-parallel1.48-dev : Conflicts: libboost-graph-parallel1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-graph1.48-dev : Conflicts: libboost-graph1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-iostreams1.48-dev : Conflicts: libboost-iostreams1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-math1.48-dev : Conflicts: libboost-math1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-mpi-python1.48-dev : Conflicts: libboost-mpi-python1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-mpi-python1.48.0 : Conflicts: libboost-mpi-python1.46.1 but 1.46.1-7ubuntu3 is to be installed
 libboost-mpi1.48-dev : Conflicts: libboost-mpi1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-program-options1.48-dev : Conflicts: libboost-program-options1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-python1.46-dev : Depends: python-dev but it is not going to be installed
 libboost-python1.48-dev : Depends: python-dev but it is not going to be installed
                           Conflicts: libboost-python1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-regex1.48-dev : Conflicts: libboost-regex1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-serialization1.48-dev : Conflicts: libboost-serialization1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-signals1.48-dev : Conflicts: libboost-signals1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-system1.48-dev : Conflicts: libboost-system1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-test1.48-dev : Conflicts: libboost-test1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-thread1.48-dev : Conflicts: libboost-thread1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost-wave1.48-dev : Conflicts: libboost-wave1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost1.48-dbg : Conflicts: libboost1.46-dbg but 1.46.1-7ubuntu3 is to be installed
 libboost1.48-dev : Conflicts: libboost1.46-dev but 1.46.1-7ubuntu3 is to be installed
 libboost1.48-doc : Conflicts: libboost1.46-doc but 1.46.1-7ubuntu3 is to be installed
E: Unable to correct problems, you have held broken packages.

1 个答案:

答案 0 :(得分:3)

libboost-dev是一个虚拟包,指向存储库中部署的最新boost开发包集。目前,对于您的ubuntu版本,似乎1.48.02是最新版本(请参阅package description)。存储库中可能还有其他版本,例如1.46,它似乎是在12.04发布时可用的版本。

启动时:

apt-get install liboost*

程序包管理器将尝试安装名称以libboost开头的每个程序包,而不仅仅是最新版本。你真正想要的只是安装一组开发包(以及你的应用程序可能需要的所有运行时包,但这将由apt的依赖关系跟踪器来处理。

以下命令:

apt-get update
apt-get install libboost-dev

aptitude install libboost-dev

应该将您的系统升级到boost dev软件包的最新版本。