LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1293|回复: 7

stardict-3.0.1编译错误

[复制链接]
发表于 2009-6-4 16:38:02 | 显示全部楼层 |阅读模式
系统:FC9
编译器:gcc-4.3.0

1,运行 ./configure --disable-spell --disable-gnome-support --disable-gucharmap --disable-espeak --disable-festival,通过。

2,make,出现以下错误:
g++ -DHAVE_CONFIG_H -I. -I../.. -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include   -Wall -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include       -g -O2 -MT data.o -MD -MP -MF .deps/data.Tpo -c -o data.o data.cpp
data.cpp: In member function ‘gchar* DictBase::GetWordData(guint32, guint32)’:
data.cpp:108: error: ‘strlen’ was not declared in this scope
data.cpp:109: error: ‘memcpy’ was not declared in this scope
data.cpp:147: error: ‘memcpy’ was not declared in this scope
data.cpp:170: error: ‘memcpy’ was not declared in this scope
data.cpp:177: error: ‘memcpy’ was not declared in this scope
data.cpp: In member function ‘bool DictBase::SearchData(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, guint32, guint32, gchar*)’:
data.cpp:220: error: ‘strlen’ was not declared in this scope
data.cpp:227: error: ‘strlen’ was not declared in this scope
data.cpp:275: error: ‘strstr’ was not declared in this scope
data.cpp:282: error: ‘strlen’ was not declared in this scope
make[3]: *** [data.o] Error 1
不知道是哪里出现了问题,请教各位,谢谢!
发表于 2009-6-4 17:19:05 | 显示全部楼层
估计, 可能, 大概, 也许你得换另一个版本的tar.gz.源包。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-4 18:44:38 | 显示全部楼层
Post by 念悠悠;1994112
估计, 可能, 大概, 也许你得换另一个版本的tar.gz.源包。
我下载了stardict-2.4.8 的源码包

http://nchc.dl.sourceforge.net/s ... rdict-2.4.8.tar.bz2

编译出来发现是一样的错误。
if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -Wall -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include      -g -O2 -MT data.o -MD -MP -MF ".deps/data.Tpo" -c -o data.o data.cpp; \
        then mv -f ".deps/data.Tpo" ".deps/data.Po"; else rm -f ".deps/data.Tpo"; exit 1; fi
data.cpp: In member function ‘gchar* DictBase::GetWordData(guint32, guint32)’:
data.cpp:106: error: ‘strlen’ was not declared in this scope
data.cpp:107: error: ‘memcpy’ was not declared in this scope
data.cpp:145: error: ‘memcpy’ was not declared in this scope
data.cpp: In member function ‘bool DictBase::SearchData(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, guint32, guint32, gchar*)’:
data.cpp:217: error: ‘strlen’ was not declared in this scope
data.cpp:224: error: ‘strlen’ was not declared in this scope
data.cpp:270: error: ‘strstr’ was not declared in this scope
data.cpp:277: error: ‘strlen’ was not declared in this scope
按照上述命令依次搜索头文件目录,发现确实没有对 'memcpy' 的声明。

当前目录为src/lib/

参与搜索的目录:
./
../
../../
/usr/include/gtk-2.0/
/usr/lib/gtk-2.0/include/
/usr/include/atk-1.0/
/usr/include/cairo/
/usr/include/pango-1.0/
/usr/include/glib-2.0/
/usr/lib/glib-2.0/include/
以下三个为非显式目录:
/usr/local/include/
/usr/include/
/usr/lib/gcc/i386-redhat-linux/4.3.0/include/


参与搜索的头文件:(见附件)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2009-6-4 21:02:13 | 显示全部楼层
加几个#include…………
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-4 21:42:20 | 显示全部楼层
很多头文件都有类似的声明,到底应该选哪一个呢?
回复 支持 反对

使用道具 举报

发表于 2009-6-5 09:30:24 | 显示全部楼层
看哪一个.h都被引用 就在那个加
回复 支持 反对

使用道具 举报

发表于 2009-6-5 09:40:43 | 显示全部楼层
memcpy 是标准的 C++ 函数吧。 string.h 里的,怎么可能,没有定义,开玩笑。

Post by kooder;1994149
我下载了stardict-2.4.8 的源码包,编译出来发现是一样的错误。

按照上述命令依次搜索头文件目录,发现确实没有对 'memcpy' 的声明。

当前目录为src/lib/

参与搜索的目录:
./
../
../../
/usr/include/gtk-2.0/
/usr/lib/gtk-2.0/include/
/usr/include/atk-1.0/
/usr/include/cairo/
/usr/include/pango-1.0/
/usr/include/glib-2.0/
/usr/lib/glib-2.0/include/
/usr/local/include/
/usr/include/
/usr/lib/gcc/i386-redhat-linux/4.3.0/include/

参与搜索的头文件:(见附件)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-5 12:03:55 | 显示全部楼层
Post by pingz;1994340
memcpy 是标准的 C++ 函数吧。 string.h 里的,怎么可能,没有定义,开玩笑。

楼上的说的对,经核实,发现我下载的源码包中 src/lib/data.cpp 中少了几句#include。

参考了

http://www.stardict.cn/forum/viewtopic.php?f=5&t=600

后,编译安装成功。
回复 支持 反对

使用道具 举报

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

本版积分规则

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