【问题标题】:Make file: Flow doesnt enter if loop制作文件:流不进入if循环
【发布时间】:2013-01-29 10:20:57
【问题描述】:

我正在尝试将大量文件(.pc pro*c 代码、c 代码和 .h 文件编译成一个 exe)成一个 exe。

示例代码。

请注意,制表符会相应地放置。但是在发布时在此处删除。

抱歉,已尝试修复缩进。但现在会做得更好。

请注意,行首的 T 代表一个制表符。

build :$(OBJS)

T @if [ "$(EXE)" = "abc" ]; then \

T echodo  `command`\

T elif [ "$(ORA_CLIENT_LIB)" = "shared" ]; then \

T echodo $(CC) $(LDFLAGSSHRD) $(LIBPATHS)  -m64 -o $(EXE) $(OBJS) `cat $(ORACLE_HOME)/rdbms/lib/sysliblist ` $(LIBHOME)/libclntsh.so; \

T else \

T echodo $(CC) $(LIBPATH) -m64 -o $(EXE) $(OBJS) -L$(LIBPATH) $(PROLDLIB) $(AMOLIB) $(LIBHOME)/libclntsh. a ;\

T fi

变量 ORA CLient Lib 设置为共享。而且,代码仍然没有进入 elif 块。我错过了什么吗?

当我运行 make 时,我得到了错误...

------/bin/sh: -c: line 4: syntax error: unexpected end of file
------make: *** [build] Error 2

所有 .o 文件都已创建,但 exe 不是。我不明白缺少什么。 echodo 是 Oracle bin 的文件。由于我正在编译 ProC 代码,因此它必须具有一定的相关性。

【问题讨论】:

  • 这是 Makefile 的一部分吗?你真的需要修复缩进/格式,它是不可读的。
  • 修复了缩进先生。

标签: c linux makefile proc


【解决方案1】:

我会继续猜测......

我猜echodo 会回显它的所有参数,并将第一个参数作为命令执行,其余参数作为它执行的命令的参数。

但是在行中

echodo  --------

它回显--------,然后尝试执行它。由于您不太可能拥有名为 -------- 的命令,因此您会收到错误消息。

如果要回显字符串--------,则使用普通的普通echo 命令。

【讨论】:

  • 出于安全原因,我不得不在此处删除一些代码。 '\' 用于行尾。即使我不知道 Echodo 是什么,但它正在现有文件中使用。我看到它是存在于 oracle bin 文件夹中的文件。所以一定是Pro*C相关的文件
【解决方案2】:

我希望在除最后一行之外的所有行上都能看到\s,如下所示:

build: $(OBJS)
        @if [ "$(EXE)" = "abc" ]; then \
        echo --------; \
        elif [ "$(ORA_CLIENT_LIB)" = "shared" ]; then \
        echodo $(CC) $(LDFLAGSSHRD) $(LIBPATHS)  -m64 -o $(EXE) $(OBJS) `cat $(ORACLE_HOME)/rdbms/lib/sysliblist ` $(LIBHOME)/libclntsh.so; \
        else \
        echodo $(CC) $(LIBPATH) -m64 -o $(EXE) $(OBJS) -L$(LIBPATH) $(PROLDLIB) $(AMOLIB) $(LIBHOME)/libclntsh.a; \
        fi

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 2012-05-10
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多