【问题标题】:unrecognized debugging option: 1 [enabled by default]无法识别的调试选项:1 [默认启用]
【发布时间】:2015-06-01 23:10:47
【问题描述】:

我正在用 C 语言为 Windows 和 linux 编写一个跨平台的 gtk 应用程序。今天我遇到了标题中奇怪的编译器错误(我以前从未见过)。

当我在 Windows 中构建程序时会发生这种情况,而不是在 Linux 中。当我通过命令行在 Windows 中构建它时,此消息显示为警告并且程序编译成功。但是,当我在代码块中构建它时,此消息显示为错误并且无法编译。

这是我的 makefile 中的内容:

ifeq ($(OS),Windows_NT)
    CC = mingw32-gcc
    BIN = "bin\"
    DIRCHK = if exist bin rd /s /q bin
    CPGLADE = copy main_win.glade bin\Release
    RM = rmdir /S /Q bin
    SQLITE = -dll sqlite3.dll
    DLL = copy /Y sqlite3.dll bin\Debug && copy /Y sqlite3.dll bin\Release
else
    CC = gcc
    BIN = -vp bin/
    RM = rm -rf bin
    SQLITE = -l sqlite3 -ldl -lpthread
    DLL = rm -f sqlite3.dll
endif

SHELL = bash

GTK := $(shell pkg-config --cflags --libs gtk+-3.0)

CFLAGS := -g -Wall -static-libgcc -lm $(GTK) $(SQLITE)

TARGET = deans2

all:
    $(DIRCHK)
    mkdir $(BIN)Debug
    mkdir $(BIN)Release
    $(CPGLADE)
    $(CC) main.c $(CFLAGS) -o bin/Release/$(TARGET)
    $(DLL)

Debug:
    $(DIRCHK)
    mkdir $(BIN)Debug
    $(CPGLADE)
    $(CC) main.c $(CFLAGS) -o bin/Debug/$(TARGET)
    $(DLL)

Release:
    $(DIRCHK)
    mkdir $(BIN)Release
    $(CPGLADE)
    $(CC) main.c $(CFLAGS) -o bin/Release/$(TARGET)
    $(DLL)

clean:
    $(RM)

【问题讨论】:

  • 向我们展示产生错误的命令行。
  • 可能是错误unrecognized debugging option: l(字母l不是数字1)?因为-dll 不是gcc 的有效标志,我知道并且会导致我相信的错误(来自CFLAGS 中使用的SQLITE 的值,然后在$(CC) 行中构建时窗户)。
  • @EtanReisner 这似乎成功了。我不确定为什么我以前使用该标志,但现在我正在使用 SQLite 文档中指定的完整合并进行构建。感谢和抱歉这个愚蠢的问题!

标签: c gcc compiler-errors makefile cross-platform


【解决方案1】:

你确定错误是unrecognized debugging option: 1吗? (第一名。)

也许是unrecognized debugging option: l? (字母 ell。)

我预计在 Windows 上构建时 SQLITE 中设置的 -dll 标志会出现后一个错误,因为我知道这不是 gcc 的有效标志。

你想在那里做什么?

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 2022-08-09
    • 2020-09-24
    • 2016-08-21
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多