-1

我正在尝试将大量文件(.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 代码,因此它必须具有一定的相关性。

4

2 回答 2

0

I was expecting to see \s on all of the lines except the last like this:

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
于 2013-01-29T10:33:27.500 回答
0

我会继续冒险猜测......

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

然而在行

echodo  --------

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

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

于 2013-01-29T10:29:57.523 回答