【问题标题】:How to set the environment variable GUILE_WARN_DEPRECATED?如何设置环境变量 GUILE_WARN_DEPRECATED?
【发布时间】:2018-02-04 01:02:27
【问题描述】:

我在我的 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 

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

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 设置为“详细”并重新运行程序以获取更多信息。将其设置为“否”以禁止显示此消息。

如何以及在哪里适当地设置环境变量GUILE_WARN_DEPRECATED

【问题讨论】:

    标签: c gcc centos6 guile


    【解决方案1】:

    你不执行像server.c这样的C文件;你把它们编译成像server这样的程序,然后运行that

    由于程序运行时出现提示信息,所以需要在运行程序时设置环境变量。我假设您使用 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 创建新窗口时设置。

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

    显然,最好停止使用已弃用的功能,因此详细警告是最适合使用的设置。但是,您可能想忽略您收到的警告,而不关心您的程序将来会中断,因此您会做傻事并改用GUILE_WARN_DEPRECATED=no。我不能夸大这将是多么愚蠢——不要使用已弃用的函数。编辑代码并修复它以使用首选替换。

    【讨论】:

    • 我正在将它们编译成像服务器这样的输出文件(在问题中没有提到)。我正在使用 tcsh shell。我想更正被贬低的功能,我将把变量设置为“详细”。另外,如果我没有 root 权限,是否可以设置环境变量 GUILE_WARN_DEPRECATED。
    • 使用tcsh,您需要使用setenv GUILE_DEPRECATED_WARN detailed 将变量设置为最佳选择。您不应该以 root 身份进行开发工作——您无需成为 root 即可编译。但是,无论您是否具有 root 权限,您都将环境设置为相同(所以setenv)。如有必要,还有其他方法可以将其添加到构建环境(通常有不止一种方法可以做任何事情),但只需在终端使用 setenv 就足够了。
    猜你喜欢
    • 2019-07-02
    • 2014-09-29
    • 2012-09-18
    • 2014-05-27
    • 2020-02-06
    • 2015-10-30
    • 2019-07-23
    • 2017-01-01
    相关资源
    最近更新 更多