如何在linux上安装c库(特别是SDL_image)

时间:2012-08-24 03:02:23

标签: c linux dependencies install

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

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

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

int main()
{
}

我尝试过:

  • here
  • 获取二进制文件
  • 将其放入/etc/usr/clibs
  • 将此路径添加到/etc/ld.so.conf

=&GT;失败。仍然无法编译我的文件。

我从here

安装了rpm

=&GT;失败,仍然无法编译

我尝试从源码构建: 运行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.

我不明白,它希望安装一个脚本,其安装的结果是安装......

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

感谢。

3 个答案:

答案 0 :(得分:4)

在大多数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#)。

答案 1 :(得分:2)

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

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

答案 2 :(得分: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

(我从某个地方把它弄错了,我真的不明白)