LinuxSir.cn,穿越时空的Linuxsir!

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

自己用源码编译gftp-2.0.18碰到这样一个问题,大家帮忙看看!

[复制链接]
发表于 2005-7-5 00:57:31 | 显示全部楼层 |阅读模式
用的是kubuntu,在源里直接用包管理器安装的gftp对中文目录的支持不是很好

在设置了远程字符集之后也是只有少数站点可以正常显示中文目录,也试过hiweed网站上介绍的那个方法,好像也没能支持中文目录的显示,所以就打算自己编译了-----


在执行make的时候出现如下错误提示:

(不是很明白,大家帮忙看看是什么问题----  thx!)


gftp-text.o(.text+0x315): In function `gftp_text_ask_question':
/home/attention/MyDownloads/gftp-2.0.18/gftp-2.0.18/src/text/gftp-text.c:188:

undefined reference to `g_locale_from_utf8'
~~~~~~~~~~~~~~~~~~~~~~

collect2: ld returned 1 exit status
make[3]: *** [gftp-text] 错误 1
make[3]: Leaving directory `/home/attention/MyDownloads/gftp-2.0.18/gftp-2.0.18/src/text'
make[2]: *** [all-recursive] 错误 1
make[2]: Leaving directory `/home/attention/MyDownloads/gftp-2.0.18/gftp-2.0.18/src'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/home/attention/MyDownloads/gftp-2.0.18/gftp-2.0.18'
make: *** [all] 错误 2



另外,在gftp-text.c文件的188行及其前后的一些行,是如下的代码:

char *                //这一行是第154行!
gftp_text_ask_question (const char *question, int echo, char *buf, size_t size)
{
  struct termios term, oldterm;
  gchar *locale_question;
  sigset_t sig, sigsave;
  char *pos, *termname;
  int singlechar;
  FILE *infd;

  if (!echo)
    {
      sigemptyset (&sig);
      sigaddset (&sig, SIGINT);
      sigaddset (&sig, SIGTSTP);
      sigprocmask (SIG_BLOCK, &sig, &sigsave);

      termname = ctermid (NULL);
      if ((infd = fopen (termname, "r+")) == NULL)
        {
         
          gftp_text_log (gftp_logging_error, NULL,
                         _("Cannot open controlling terminal %s\n"), termname);
          return (NULL);
        }

      tcgetattr (0, &term);
      oldterm = term;
      term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
      tcsetattr (fileno (infd), TCSAFLUSH, &term);
    }
  else
    infd = stdin;

  locale_question = g_locale_from_utf8 (question, -1, NULL, NULL, NULL);   //这行是第188行!!!!!
  if (locale_question != NULL)
    {
      printf ("%s%s%s ", GFTPUI_COMMON_COLOR_BLUE, locale_question,
              GFTPUI_COMMON_COLOR_DEFAULT);
      g_free (locale_question);
    }
  else
    printf ("%s%s%s ", GFTPUI_COMMON_COLOR_BLUE, question,
            GFTPUI_COMMON_COLOR_DEFAULT);

  if (size == 1)
    {
      singlechar = fgetc (infd);
      *buf = singlechar;
    }
  else
    {
      if (fgets (buf, size, infd) == NULL)
        return (NULL);

      if (size > 1)
        buf[size - 1] = '\0';
    }

  if (!echo)
    {
      printf ("\n");
      tcsetattr (fileno (infd), TCSAFLUSH, &oldterm);
      fclose (infd);
      sigprocmask (SIG_SETMASK, &sigsave, NULL);
    }

  if (size > 1)
    {
      for (pos = buf + strlen (buf) - 1; *pos == ' ' || *pos == '\r' ||
                                         *pos == '\n'; pos--);
      *(pos+1) = '\0';

      for (pos = buf; *pos == ' '; pos++);  

      if (*pos == '\0')
        return (NULL);

      return (pos);
    }
  else
    return (buf);
}
发表于 2005-7-5 02:09:52 | 显示全部楼层
错误报的是找不到`g_locale_from_utf8',这是glib的一个库函数,检查一下你是不是装了glib的相应的头文件和库?如果装了的话,再检查一下include的路径。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-8 17:46:44 | 显示全部楼层
谢谢了---


系统里已经装了libglib1.2, libglib1.2-dev, libglib2.0-0, libglib2.0-dev这些包,不知道是不是算已经把glib相应的头文件和库装上了?
回复 支持 反对

使用道具 举报

发表于 2005-7-8 18:05:29 | 显示全部楼层
还缺 libgtk2.0-dev 吧
回复 支持 反对

使用道具 举报

发表于 2005-7-8 18:07:22 | 显示全部楼层
gftp-2.0.18远程字符集有问题,需要打补丁。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-8 19:04:40 | 显示全部楼层
Post by dlz_cn
还缺 libgtk2.0-dev 吧


libgtk2.0-dev的确是还没有装上,不过用新立得安装的时候依赖关系解决不好--
先是提示依赖libpango1.0-dev

然后装libpango1.0-dev的时候,提示依赖关系:

libpango1.0-dev:
依赖: libfreetype6-dev 但是此软件包将不会被安装
依赖: libxft-dev 但是此软件包将不会被安装
依赖: libfontconfig1-dev 但是此软件包将不会被安装


出现这个我就没办法了,因为当时做中文美化的时候,用的是firefly的字体补丁,libfreetype6-dev这个包是用了2.1.7-2.3firefly替代的----

不能升级,也不能删除,因为如果删除firefly这个包的话,新立得给出的提示是有好多依赖它的软件都要连带着删除了----


不知道有什么方法可以解决firefly这个包的问题?
回复 支持 反对

使用道具 举报

发表于 2006-8-27 09:17:10 | 显示全部楼层
碰到同样的问题,呵呵,用Ubuntu,一个sudo apt-get,少了楼上出现的不少烦恼啊!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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