如何设置环境变量GUILE_WARN_DEPRECATED?

时间:2017-08-25 23:27:25

标签: c gcc centos6 guile

我在我的C代码中使用guile(版本2.0)(在gcc版本4.8.5和OS centos 6中编译)。

我的makefile看起来像这样。

CC=gcc
CFLAGS=-Wall -march=native -O2 -pipe -ffast-math -I/usr/include/guile/2.0
LDFLAGS=-lm -lguile -lgc -lpthread -lfftw3f -llapack

.PHONY: all 

all: server mdclient_ash client

mdclient_ash: mdclient_ash.o

client: client.o mdlib.o ipp.o

mdmd: mdlib.o ${PROC_OBJS} mdmd.o ipp.o

mdmd.o: mdmd.c tsdmd.h

clean:  
    rm -rf *~ *.o sp/*.o sp/*~ pp/ff/*.o pp/fr/*~ pp/sf/*.o pp/st/*~  

pp/rte/*.o pp/rte/*.~  server mdclient_ash client 

编译过程警告某些与guile相关的错误,例如:

  

不推荐使用scm_int2num(在/usr/include/guile/2.0/libguile/deprecated.h:667中声明)[-Wdeprecated-declarations]

 element = scm_list_ref(retval,scm_int2num(1));

没有错误。在执行我的C文件(主文件,即server.c)时,我收到以下错误:

  

已使用某些已弃用的功能。将环境变量GUILE_WARN_DEPRECATED设置为“detailed”,然后重新运行该程序以获取更多信息。将其设置为“no”以禁止显示此消息。

我如何以及在何处适当地设置环境变量GUILE_WARN_DEPRECATED

1 个答案:

答案 0 :(得分:1)

您不会执行server.c之类的C文件;你将它们编译成像server这样的程序,然后运行那个

由于程序运行时出现消息,因此您需要在运行程序时设置环境变量。我假设您使用POSIX shell派生词,例如bash; C shell派生词的语法不同,例如tcsh

您可以使用:

  1. GUILE_WARN_DEPRECATED=detailed server仅为此程序调用设置环境变量。

  2. export GUILE_WARN_DEPRECATED=detailed; server设置并导出环境变量,并且不需要再次重置,直到您在新窗口中启动新shell或类似的东西。

  3. export GUILE_WARN_DEPRECATED=detailed添加到您的个人资料(~/.profile~/.bash_profile~/.bashrc文件中)。现在,当您使用登录shell登录或创建新窗口时,将设置此项。

  4. 还有其他一些方法可以执行这些操作 - 它们是上述选项的次要变体。检查shell手册,了解启动时处理哪些文件。

    显然,最好停止使用已弃用的功能,因此详细警告是最合适的设置。但是,您可能希望忽略您给出的警告,而不是关心您的程序将来会破坏,因此您会做愚蠢的事情并使用GUILE_WARN_DEPRECATED=no代替。我不能夸大会有多愚蠢 - 使用已弃用的功能。编辑代码并修复它以使用首选替换代码。