我在我的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
?
答案 0 :(得分:1)
您不会执行server.c
之类的C文件;你将它们编译成像server
这样的程序,然后运行那个!
由于程序运行时出现消息,因此您需要在运行程序时设置环境变量。我假设您使用POSIX shell派生词,例如bash
; C shell派生词的语法不同,例如tcsh
。
您可以使用:
GUILE_WARN_DEPRECATED=detailed server
仅为此程序调用设置环境变量。
export GUILE_WARN_DEPRECATED=detailed; server
设置并导出环境变量,并且不需要再次重置,直到您在新窗口中启动新shell或类似的东西。
将export GUILE_WARN_DEPRECATED=detailed
添加到您的个人资料(~/.profile
或~/.bash_profile
或~/.bashrc
文件中)。现在,当您使用登录shell登录或创建新窗口时,将设置此项。
还有其他一些方法可以执行这些操作 - 它们是上述选项的次要变体。检查shell手册,了解启动时处理哪些文件。
显然,最好停止使用已弃用的功能,因此详细警告是最合适的设置。但是,您可能希望忽略您给出的警告,而不是关心您的程序将来会破坏,因此您会做愚蠢的事情并使用GUILE_WARN_DEPRECATED=no
代替。我不能夸大会有多愚蠢 - 不 使用已弃用的功能。编辑代码并修复它以使用首选替换代码。