如何从Linux上的软件管理器链接到库?

时间:2013-02-22 15:49:00

标签: c++ linux codeblocks

所以我最近厌倦了Windows并安装了Linux Mint。我正在尝试在Code :: Blocks中构建一个项目。我已经安装了Code :: Blocks但我需要glew(以及其他一些库)。我在软件管理器中找到它并安装它。我设法找到并包含头文件。但我觉得下一步应该是相对简单的,并且在整个互联网上,但(可能由于缺乏适当的术语)我一直无法找到答案。

我是否需要在我的系统上找到文件并手动链接到每个库?这就是我在Windows上所做的,但我刚刚下载了二进制文件并知道它们在哪里。我从软件管理器中找到了一个库,并手动链接到它,但感觉就像我做错了。既然它已经“安装”在系统上,那么有一些快速的链接方法吗?

3 个答案:

答案 0 :(得分:3)

你应该为链接器'-l'和'-L'使用两个标志。您可以在项目属性中的某处设置这些标志。

第一个'-l'告诉链接器链接特定的库。例如glew,可能在/ usr / lib中是一个名为libglew.so的文件,当你用“-lglew”标志链接你的程序时,它会将它与glew库链接。链接器在几个标准位置查找库:/ usr / lib,/ usr / local / lib和一些额外的。如果你的libs在非标准位置,请使用'-L'标志指向这些目录。

许多Linux发行版提供了两种带有库的包,只有运行时的常规包,以及带有头文件和库的开发版本的开发包(通常带有dev或devel的前缀或后缀)。

答案 1 :(得分:1)

使用构建系统,卢克! 在* nix世界中开发/构建软件的典型方法是3个步骤:

  • 配置阶段 - 在构建smth之前,你必须意识到在什么环境中你要构建你的软件......所需要的一切都安装好......如果不是这样的话在编译阶段(编译几个小时后)您(或构建软件的用户)收到错误:无法#include'xxx.h'。最受欢迎的构建系统是:cmake,我最喜欢的autotools之后。你也可以试试scons或者疯狂(b)果酱...
  • 编译阶段 - 通常只是make所有
  • 安装阶段 - 将刚构建的软件部署到系统中。或其他方式:为目标发行版(.deb / .rpm /& etc等)构建软件包

在配置阶段使用测试脚本(不用担心它们有很多用于各种用例)你可以找到所有必需的头文件/库/程序/编译器选项/你需要编译你的包... ... :不要在Makefile中使用硬编码路径(或用于make二进制文件的任何内容)

答案 2 :(得分:0)

回答这个问题实际上取决于你想要达到的目标。如果您只想自己构建应用程序,那么您只需在makefile或代码编辑器设置中编写库的路径即可。您可能甚至不必这样做,就像您的Linux分发包管理器安装的库,标头通常转到/ usr / include和库到/ usr / lib或/ urs / lib64等。这些位置是标准的,您不需要明确指定它们。无论如何,您需要指定要链接到的库。 如果您想创建可由其他人构建的应用程序,或者您在许多不同的配置/环境中使用cmake之类的内容创建应用程序将非常有用。