通过 Makefile 和 `dpkg-buildpackage -us -uc` 生成错误的 Eiffel 编译
Eiffel compilation through Makefile and `dpkg-buildpackage -us -uc` generating an error
我正在尝试为我的 Eiffel 应用程序创建一个 debian 包。
根结构中的 make
或 make -j4
(这是从 dpkg-buildpackage 调用的)完成工作 没有错误
但是当从调用时dpkg-buildpackage -us -uc
它调用了Makefile,它退出并出错
In file included from big_file_C7_c.c:40:0:
lo322.c: In function ‘inline_F425_4447’:
lo322.c:97:5: error: format not a string literal and no format arguments [-Werror=format-security]
syslog(arg1, arg2);
^~~~~~
cc1: some warnings being treated as errors
我的 makefile 信息如下:
#Build variables
MY_EC = $(shell which ec)
BUILT_TARGET = EIFGENs/$(TARGET_NAME)/F_code/$(APP_NAME)
# This target will compile all files
all: build
build:
# Checks eiffel compiler
# @echo "MY EC IS: ${MY_EC}"
@if [ -z "${MY_EC}" ]; then
echo "Compiler not found";
else
echo "Eiffel compiler found";
fi
# Compilation
echo '---------->finalizing'
ec -finalize -config $(APP_NAME).ecf -target $(TARGET_NAME) || (echo "last command failed $$="; exit 1)
cd $(FINAL_EXE_DIR); \
echo '---------->Finish freezing';\
finish_freezing || (echo "A problem occured during finish_freezing!!!"; exit 1)
此问题是由 EiffelStudio 18.11 及更早版本 中 class LOG_WRITER_SYSTEM
的功能 c_logging_write_log
引起的,该功能发出以下调用:
syslog($priority, $msg);
替换为
syslog($priority, "%s", (char *) $msg);
(在 $ISE_EIFFEL/library/runtime/logging/writers/log_writer_system.e
中)并重新编译系统(从头开始,如果日志库被标记为只读)应该可以解决问题。
我正在尝试为我的 Eiffel 应用程序创建一个 debian 包。
根结构中的 make
或 make -j4
(这是从 dpkg-buildpackage 调用的)完成工作 没有错误
但是当从调用时dpkg-buildpackage -us -uc
它调用了Makefile,它退出并出错
In file included from big_file_C7_c.c:40:0:
lo322.c: In function ‘inline_F425_4447’:
lo322.c:97:5: error: format not a string literal and no format arguments [-Werror=format-security]
syslog(arg1, arg2);
^~~~~~
cc1: some warnings being treated as errors
我的 makefile 信息如下:
#Build variables
MY_EC = $(shell which ec)
BUILT_TARGET = EIFGENs/$(TARGET_NAME)/F_code/$(APP_NAME)
# This target will compile all files
all: build
build:
# Checks eiffel compiler
# @echo "MY EC IS: ${MY_EC}"
@if [ -z "${MY_EC}" ]; then
echo "Compiler not found";
else
echo "Eiffel compiler found";
fi
# Compilation
echo '---------->finalizing'
ec -finalize -config $(APP_NAME).ecf -target $(TARGET_NAME) || (echo "last command failed $$="; exit 1)
cd $(FINAL_EXE_DIR); \
echo '---------->Finish freezing';\
finish_freezing || (echo "A problem occured during finish_freezing!!!"; exit 1)
此问题是由 EiffelStudio 18.11 及更早版本 中 class LOG_WRITER_SYSTEM
的功能 c_logging_write_log
引起的,该功能发出以下调用:
syslog($priority, $msg);
替换为
syslog($priority, "%s", (char *) $msg);
(在 $ISE_EIFFEL/library/runtime/logging/writers/log_writer_system.e
中)并重新编译系统(从头开始,如果日志库被标记为只读)应该可以解决问题。