Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux上安装c库(特别是SDL_映像)_C_Linux_Dependencies_Installation - Fatal编程技术网

如何在linux上安装c库(特别是SDL_映像)

如何在linux上安装c库(特别是SDL_映像),c,linux,dependencies,installation,C,Linux,Dependencies,Installation,在Linux上安装c库的一般方法是什么 特别是,我想安装库,目的是编译以下内容: #include <SDL_image.h> // it errs that it does not recognize this int main() { } 我不明白,它需要一个脚本来安装,它的存在是安装的结果 我不知道该试什么了。。。我花了很多时间试图弄明白这一点,所以如果有人能给我一个解决方案,做这个做那个,那就太好了。对一般问题的回答将是一个巨大的好处 谢谢。sdl配置将作为安装libsd

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

特别是,我想安装库,目的是编译以下内容:

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

int main()
{
}
我不明白,它需要一个脚本来安装,它的存在是安装的结果

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


谢谢。

sdl配置将作为安装libsdl的结果出现,您必须在安装libsdl映像之前执行此操作


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

在大多数Linux发行版中,SDL库都提供了现成的软件包。在Debian和Ubuntu上,您只需
sudo-apt-get-install libsdl-image1.2-dev
。在Red Hat、Fedora和CentOS中,您可以执行
sudo-yum安装SDL\u 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#)。

解决方案: 我当前安装的软件包是:

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;
}

(我从某个地方偷来的,我真的不太明白)

我安装了前面提到的包,当我试图编译这个简单的示例时,只包含它抱怨不存在的标题。有什么解决办法吗?我是完全愚蠢,还是安装和使用c库的过程极其繁琐?没有自动化的工具吗?我确实按照你的指示安装了软件包。然而,在编译时我仍然会出错。它不知道头文件。请看我上面的回复。根据您目前所讲的故事,您曾尝试从第三方源安装rpm,也曾尝试自己编译库,但都失败了。这些失败尝试的残余可能会阻止事情正常运行。我建议你深吸一口气,从头重写你的问题,包括更多细节。不要只说“我有错误”。给他们看!我已经清除了旧软件包的残余,并安装了正确的软件包。我已经成功地编译了我的简单代码并运行了它(见下面的答案)。(谢谢你的帮助)
#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