如何在linux上安装c库(特别是SDL_映像)
在Linux上安装c库的一般方法是什么 特别是,我想安装库,目的是编译以下内容:如何在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
#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