jiangtao9999 发表于 2005-5-1 22:28:23

在SPEC里怎么用env传递正确的参数?

命令如下:
% env CFLAGS='-O3 -Wall -mv8 -funroll-all-loops -fomit-frame-pointer \
      -mcpu=ultrasparc' /bin/sh configure [configure-options]...

但在 spec 里:
env CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} \
                                          --enable-interface=ncurses,slang,vt100,alsaseq,server,network \
                                          --enable-audio=alsa,arts,oss,esd,vorbis,flac \
                                          --with-default-output=alsa \
                                          --enable-gtk \
                                          --enable-dynamic \
                                          --enable-alsaseq

rpmbuild 时是:
env 'CFLAGS=-O2 -g -pipe -D_FORTIFY_SOURCE=2 -m32 -march=i686 -mcpu=i686 -mtune=i686' ./configure --prefix=/usr --enable-interface=ncurses,slang,vt100,alsaseq,server,network --enable-audio=alsa,arts,oss,esd,vorbis,flac --with-default-output=alsa --enable-gtk --enable-dynamic --enable-alsaseq

导致变量传递失败 :(
configure 没有得到相应的配置

stdio 发表于 2005-5-2 07:04:18

用export

export CFLAGS="$RPM_OPT_FLAGS"

jiangtao9999 发表于 2005-5-2 10:36:46

export 好像不起作用………

KDE 发表于 2005-5-2 14:03:34

不要使用 env 命令:


CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} \
         --enable-interface=ncurses,slang,vt100,alsaseq,server,network \
         --enable-audio=alsa,arts,oss,esd,vorbis,flac \
         --with-default-output=alsa \
         --enable-gtk \
         --enable-dynamic \
         --enable-alsaseq

其实这是毫无必要的,因为标准宏 %configure 已经包含了所有预定义优化,连 --prefix 都不需要:

%configure --enable-interface=ncurses,slang,vt100,alsaseq,server,network \
         --enable-audio=alsa,arts,oss,esd,vorbis,flac \
         --with-default-output=alsa \
         --enable-gtk \
         --enable-dynamic \
         --enable-alsaseq

KDE 发表于 2005-5-2 14:11:00

如果你在编译 timidity,我劝你还是把精力放在解决 timidity gtk 界面中文支持问题上吧.这是过去我编译的带有 gtk UI 的版本:
http://www.magiclinux.org/dev/rc3/cd2/RPMS/Multimedia/timidity/

http://www.magiclinux.org/dev/rc3/cd2/SRPMS/Multimedia/TiMidity++-2.13.2-2mgc.src.rpm
http://www.magiclinux.org/dev/rc3/cd2/SRPMS/Multimedia/timidity-instruments-1.0-2mgc.src.rpm

jiangtao9999 发表于 2005-5-2 15:30:36

我是在奇怪为什么只有按照官方给出的命令才能把 CFLAGS 传递过去。

用 %configure 的话 timidity 在 make 的时候没有在输出中看到相应的配置。
按照文档的方法却可以。

jiangtao9999 发表于 2005-5-2 22:39:26


我劝你还是把精力放在解决 timidity gtk 界面中文支持问题上吧.这是过去我编译的带有 gtk UI 的版本:

你不觉得让一个只自学了几天 C 语言的人去做这件事有点太不人道么? :wink:

现在显示正常了,但列表里的文件不能打开了…………
--- TiMidity++-2.13.2/interface/gtk_i.c 2004-09-09 01:23:17.000000000 -0400
+++ TiMidity++-2.13.2.ed/interface/gtk_i.c      2005-05-02 22:20:00.000000000 -0400
@@ -172,7 +172,7 @@ filer_cb(GtkWidget *widget, gpointer dat
      if(glob(patt, GLOB_BRACE|GLOB_NOMAGIC|GLOB_TILDE, NULL, &pglob))
            return;
      for( i = 0; i < pglob.gl_pathc; i++) {
-         filenames[0] = pglob.gl_pathv[i];
+         filenames[0] = g_locale_to_utf8(pglob.gl_pathv[i], -1, NULL, NULL, NULL);
            filenames[1] = NULL;
            gtk_clist_append(GTK_CLIST(clist), filenames);
      }
@@ -180,7 +180,7 @@ filer_cb(GtkWidget *widget, gpointer dat
   }
#else
   if((int)data == 1) {
-       filenames[0] = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel));
+       filenames[0] = g_locale_to_utf8(gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel)), -1, NULL, NULL, NULL);
      filenames[1] = NULL;
      gtk_clist_append(GTK_CLIST(clist), filenames);
   }
@@ -282,13 +282,13 @@ playlist_op(GtkWidget *widget, guint dat

   if(action == 'l') {
      if((plfp = fopen(filename[0], "r")) == NULL) {
-         g_error("Can't open %s for reading.", filename[0]);
+         g_error("Can't open %s for reading.", g_locale_to_utf8(filename[0], -1, NULL, NULL, NULL));
            return;
      }
      while(fgets(fname, BUFSIZ, plfp) != NULL) {
            if(fname[strlen(fname) - 1] == '\n')
                fname[strlen(fname) - 1] = '\0';
-         filename[0] = fname;
+         filename[0] = g_locale_to_utf8(fname, -1, NULL, NULL, NULL);
            filename[1] = NULL;
            gtk_clist_append(GTK_CLIST(clist), filename);
      }
@@ -297,7 +297,7 @@ playlist_op(GtkWidget *widget, guint dat
   }
   else if(action == 's') {
      if((plfp = fopen(filename[0], "w")) == NULL) {
-         g_error("Can't open %s for writing.", filename[0]);
+         g_error("Can't open %s for writing.", g_locale_to_utf8(filename[0], -1, NULL, NULL, NULL));
            return;
      }
      for(i = 0; i < GTK_CLIST(clist)->rows; i++) {
页: [1]
查看完整版本: 在SPEC里怎么用env传递正确的参数?