GNU-linker无法找到Windows目录

时间:2014-04-29 22:37:05

标签: makefile static-libraries linker-errors

我在Windows环境中使用GNU工具链...我的工具链是使用内置的CYGWIN dll预先构建的,所以我没有安装CYGWIN ......

我的问题是:如何在GNU-linker的链接器命令中指定我的lib路径.. 下面是我的Makefile,当我运行它时,它会返回一条消息,说明无法找到路径......

...
LD = arm-elf-ld
AR = arm-elf-ar
...
...
libdir = C:\My Project\My library\

CCFLAGS = -c -mcpu=cortex-m3 -mthumb -O0 -g -Wall
ASMFLAGS = -mcpu=cortex-m3 -mthumb --gdwarf-2
LDFLAGS = -T mylinkerscript.ld -L $(libdir)
ARFLAGS = rc

all: m3.elf
m3.elf: startup.o main.o libGPIO.a
    $(LD) $(LDFLAGS) startup.o main.o -lGPIO -o $@
...
...

谢谢。

2 个答案:

答案 0 :(得分:1)

我在您的代码中看到两个潜在的问题:

  1. 路径中的空格
  2. Cygwin通常要求路径由正斜杠' /'分隔,而不是反斜杠。
  3. 因此,尝试两件事:

      LDFLAGS = -T mylinkerscript.ld -L "$(libdir)"
    

    即。添加引号以将其标记为单个参数而不是单独的单词。并尝试满足Cygwins反斜杠问题:

      libdir = /cygdrive/c/My Project/My library
    

      libdir = "C:\\My Project\\My library"
    

答案 1 :(得分:0)

如果我使用以下方式,它现在有效:

libdir = C:\\My\ Project\\My\ library

libdir = C:/My\ Project/My\ library

libdir = /cygdrive/c/My\ Project/My\ library