代码之家  ›  专栏  ›  技术社区  ›  Pipo

通过makefile和'dpkg buildpackage-us-uc'编译eiffel生成错误

  •  0
  • Pipo  · 技术社区  · 6 年前

    正在尝试创建我的艾菲尔应用程序的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
    

    我的信息生成文件如下:

    #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)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Alexander Kogtenkov    6 年前

    问题是由功能引起的 c_logging_write_log 班里的 LOG_WRITER_SYSTEM 在里面 艾菲尔工作室18.11及更早版本 这将进行以下调用:

    syslog($priority, $msg);
    

    替换为

    syslog($priority, "%s", (char *) $msg);
    

    $ISE_EIFFEL/library/runtime/logging/writers/log_writer_system.e )重新编译系统(如果日志库标记为只读,则从头开始)应该可以解决问题。