QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3526|回复: 34

请问一下:怎样静态编译一个程序啊?

[复制链接]
发表于 2004-5-26 23:12:23 | 显示全部楼层 |阅读模式
是一个SDL程序!
发表于 2004-5-27 09:43:35 | 显示全部楼层
gcc sdlpro.c -o sdlpro -L/usr/lib -L/usr/X11R6/lib -lSDL -lX11 -lXext -lGL -ldl -lm -static
回复

使用道具 举报

发表于 2004-5-27 09:44:15 | 显示全部楼层
更正:
gcc sdlpro.c -o sdlpro `sdl-config --libs --cflags` -L/usr/X11R6/lib  -lX11 -lXext -lGL -ldl -lm -static
回复

使用道具 举报

 楼主| 发表于 2004-5-27 15:49:41 | 显示全部楼层
因为我了用到了SDL_image。h和SDL_ttf。h
所以我的命令如下:
gcc ball.c -o ball `sdl-config --libs --cflags` -L/usr/X11R6/lib -lX11 -lXext -lGL -ldl -lm -static -lSDL_image -lSDL_ttf

但是出现如下错误:
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x67): In function `TTF_Init':
: undefined reference to `FT_Init_FreeType'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x20b): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_Open_Face'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x23c): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_Set_Char_Size'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x274): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x293): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x2c1): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x2e1): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x301): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x33c): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_Set_Pixel_Sizes'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x53e): In function `Load_Glyph':
: undefined reference to `FT_Get_Char_Index'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x55c): In function `Load_Glyph':
: undefined reference to `FT_Load_Glyph'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x7ab): In function `Load_Glyph':
: undefined reference to `FT_Outline_Transform'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x7c7): In function `Load_Glyph':
: undefined reference to `FT_Render_Glyph'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0xb3d): In function `TTF_CloseFont':
: undefined reference to `FT_Done_Face'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x2019): In function `TTF_Quit':
: undefined reference to `FT_Done_FreeType'
collect2: ld returned 1 exit status
[root@dove home]# gcc ball.c -o ball `sdl-config --libs --cflags` -L/usr/X11R6/lib -lX11 -lXext -lGL -ldl -lm -static -lSDL_image -lSDL_ttf
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x67): In function `TTF_Init':
: undefined reference to `FT_Init_FreeType'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x20b): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_Open_Face'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x23c): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_Set_Char_Size'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x274): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x293): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x2c1): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x2e1): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x301): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_MulFix'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x33c): In function `TTF_OpenFontIndexRW':
: undefined reference to `FT_Set_Pixel_Sizes'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x53e): In function `Load_Glyph':
: undefined reference to `FT_Get_Char_Index'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x55c): In function `Load_Glyph':
: undefined reference to `FT_Load_Glyph'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x7ab): In function `Load_Glyph':
: undefined reference to `FT_Outline_Transform'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x7c7): In function `Load_Glyph':
: undefined reference to `FT_Render_Glyph'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0xb3d): In function `TTF_CloseFont':
: undefined reference to `FT_Done_Face'
/usr/lib/libSDL_ttf.a(SDL_ttf.o)(.text+0x2019): In function `TTF_Quit':
: undefined reference to `FT_Done_FreeType'
collect2: ld returned 1 exit status
回复

使用道具 举报

发表于 2004-5-27 21:42:43 | 显示全部楼层
还要加上ttf库
回复

使用道具 举报

 楼主| 发表于 2004-5-27 21:44:48 | 显示全部楼层
我的命令后面的-lSDL_ttf
不就可以了吗?
回复

使用道具 举报

 楼主| 发表于 2004-5-28 01:27:42 | 显示全部楼层
还是不行啊!
回复

使用道具 举报

发表于 2004-5-28 10:33:53 | 显示全部楼层
正是因为你用了SDL_ttf才需要ttf库支持呀
回复

使用道具 举报

 楼主| 发表于 2004-5-28 12:16:01 | 显示全部楼层
那怎样才能使ttf库支持啊!
回复

使用道具 举报

发表于 2004-5-28 12:39:55 | 显示全部楼层
ldd /usr/lib/libSDL_ttf.so,把结果贴出来
回复

使用道具 举报

 楼主| 发表于 2004-5-28 16:17:49 | 显示全部楼层
结果如下:
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x4001b000)
        libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x40088000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x40100000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
        libz.so.1 => /usr/lib/libz.so.1 (0x4010d000)
        libm.so.6 => /lib/tls/libm.so.6 (0x4011c000)
        libdl.so.2 => /lib/libdl.so.2 (0x4013e000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40141000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40220000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

版面大哥,全靠你了!
谢谢!
回复

使用道具 举报

发表于 2004-5-28 20:37:04 | 显示全部楼层
可能是因为你在程序中的包含为"#include <SDL_ttf.h>",这样的话编译时需这样链:-lSDL/SDL_ttf;或者将上述语句改成"#include <SDL/SDL_ttf.h>"。
回复

使用道具 举报

发表于 2004-5-28 20:42:43 | 显示全部楼层
加上-lfreetype
回复

使用道具 举报

 楼主| 发表于 2004-5-28 21:57:35 | 显示全部楼层
加上 -lfreetype 还是不行啊!
gcc ball.c -o ball `sdl-config --libs --cflags` -L/usr/X11R6/lib -lX11 -lXext -lGL -ldl -lm -static -lSDL_image -lSDL_ttf -lfreetype

错误如下:

/usr/lib/libfreetype.a(ftgzip.o)(.text+0x242): In function `ft_gzip_file_init':
: undefined reference to `inflateInit2_'
/usr/lib/libfreetype.a(ftgzip.o)(.text+0x286): In function `ft_gzip_file_done':
: undefined reference to `inflateEnd'
/usr/lib/libfreetype.a(ftgzip.o)(.text+0x31f): In function `ft_gzip_file_reset':
: undefined reference to `inflateReset'
/usr/lib/libfreetype.a(ftgzip.o)(.text+0x44f): In function `ft_gzip_file_fill_output':
: undefined reference to `inflate'
collect2: ld returned 1 exit status
回复

使用道具 举报

 楼主| 发表于 2004-5-28 22:00:16 | 显示全部楼层
另外我的函数里都是#include<SDL/SDL*.H>
这个应该没问题!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 06:05 , Processed in 0.058937 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表