2016-09-29 3 views
0

У меня есть простой «Hello World!». c, named hello.c на рабочий стол:Как связать простую программу в Windows с Mingw GCC

#include <stdio.h> 

int main() { 
    printf("Hello world!\n"); 

    return 0; 
} 

Выполняю следующие команды.

  • Я предварительно обработать его с: CPP hello.c> hello.i
  • я скомпилировать его с: НКУ -S hello.i
  • Я собрать его с: , как - o hello.o hello.s

Все до сих пор. Но я не могу связать его. Я пробовал среди других команд:

ld -o hello.exe hello.o 
ld -o hello.exe hello.o -lgcc 
ld -o hello.exe hello.o -nostdlib -lgcc 

Ничего не работает. Ошибки я получаю ссылку в каждом отдельном случае являются:

hello.o:hello.c:(.text+0x9): undefined reference to `__main' 
hello.o:hello.c:(.text+0x15): undefined reference to `puts' 

Как я связать эту собранную программу hello.o для того, чтобы, наконец, произвести исполняемую программу hello.exe? Что мне не хватает? [Использование Windows 8.1, Mingw версии 0.6.2.] Спасибо заранее.

+0

Что 'НКУ -o hello.exe hello.c' сделать ? «Ничего не работает» - не очень полезное описание ситуации с ошибкой. – tofro

+0

gcc - это компилятор. Эта команда выполнит всю работу по созданию исполняемого файла. Я шел шаг за шагом. Теперь я на последнем шаге, и я хочу связать с компоновщиком (ld). –

+0

Почему вы связываетесь? Здесь есть файл сборки? И какова ваша общая цель (ссылку на сборку и файлы C)? – amanuel2

ответ

1

Даже если ваши ответы на вопросы разъяснения не являются особенно полезными:

Попробуйте что-то вроде

Л.Д. hello.o -lmsvcrt -Посещение = _main -subsystem = консоли -o Hello.exe

Если вы хотите, чтобы увидеть командную строку компоновщика стандартные НКУ польз, вызовите GCC так:

НКУ test.c -o тест -Wl, -v

Последний выход линии является то, что вы должны использовать ...

+0

Выход: ld: не удается найти -lmsvcrt. Я не могу поверить, что это должно быть так сложно. Еще ищете. Будет обновляться. –

+1

It * есть * такой сложный. Если вы используете gcc, интерфейс компилятора, это избавит вас от этих осложнений. Mingw построен для использования времени автономной работы MSC. В моей установке libmsvcrt.a находится в \ MingW \ lib - возможно, вам нужно добавить -L в каталог, где он находится в вашем. – tofro

+0

См. Выше edit, чтобы узнать, как внешний интерфейс компилятора вызывает компоновщик. – tofro

 Смежные вопросы

  • Нет связанных вопросов^_^