5

在 Linux 上安装 c 库的一般方法是什么?

特别是,我想安装这个库,目的是编译它:

#include <SDL_image.h> // it errs that it does not recognize this

int main()
{
}

我试过的:

=> 失败。仍然无法编译我的文件。

我从这里安装了 rpm

=> FAILED,仍然无法编译

我尝试从源代码构建:运行configure时,它说:

checking for sdl-config... no
checking for SDL - version >= 1.2.10... no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.

我不明白,它需要一个安装脚本,其存在是安装的结果......

我不知道该尝试什么了...我花了很多时间试图弄清楚这一点,所以如果有人可以给我一个解决方案来做这个和那个,那就太好了。对一般问题的回答将是一个很大的好处。

谢谢。

4

3 回答 3

7

在大多数 Linux 发行版中,都提供了与 SDL 库一起准备的软件包。在 Debian 和 Ubuntu 上,您可以简单地sudo apt-get install libsdl-image1.2-dev. 在 Red Hat、Fedora 和 CentOS 中,您可以执行sudo yum install SDL_image-devel.

您可以使用sdl-config. 该configure脚本是用于发现正确标志的“自动化”工具,但它非常复杂。如果您以前没有使用过 C 库,那并不是很明显。该标志将目录添加到指令-I的搜索路径。#include-L标志将目录添加到库的搜索路径并-l尝试将库添加到程序中。编译 C 分两个步骤,编译和链接。编译只看头文件(.h文件),只关心-I指令;它输出目标代码(.o文件)。链接只关心-L-l选项,并尝试解析目标代码中的符号。/lib通常,图书馆居住在/usr/lib和标题住在/usr/include. 但是,标头通常被分解为单独的子目录,因此需要更具体的-I指令。一些程序开始包含foo-config包含正确指令以针对库进行编译的程序。pkg-config是许多库使用的通用版本,尤其是与 GNOME 相关的库。

这与其他语言非常不同,其他语言通常 a) 只使用库的源代码(例如,PERL、Python)或 b) 具有包含编译所需的所有信息的可执行格式(例如,Java、C#)。

于 2012-08-24T03:25:23.620 回答
2

sdl-config 将作为安装 libsdl 的结果出现,您必须在安装 libsdl-image 之前执行此操作。

为什么不安装随发行版提供的软件包?

于 2012-08-24T03:22:02.360 回答
1

解决方案:我目前安装的包是:

libsdl1.2debian

libsdl-image1.2

libsdl1.2-dev

libsdl-image1.2-dev

我可以编译并运行以下代码:

#include <SDL_image.h>
#include <math.h>
#include <stdio.h>

int main()
{
  int x = sqrt(4);
  SDL_Surface* s = IMG_Load("foo");
  printf("%d %d", x, s);
  return 0;
}

~

使用命令:

gcc libTest.c `sdl-config --cflags` -Wall -O6 -g -O2   -lSDL_image

(我从某个地方刻出来的,我不太明白)

于 2012-08-25T22:50:11.117 回答