Я не могу собрать и запустить код сборки на Netbeans 8.1.Тем не менее, я могу правильно построить и запустить мой код C.
Подробности моих инструментов на основе C следующие:
Сначала я выбрал разработку приложения на C:
Я создал проект под названием Assembly
:
Я пытался повторить шаги, указанные в Дариус '.У меня был main.c
файл, в котором я набрал printf("Hello World\n");
, и он работал.
Затем я создал main.s
, набрав gcc -S main.c
в командной строке Windows и main.s был создан.Я попытался построить его, но он не получился со следующим выводом:
cd 'C:\Users\XXXX\Documents\NetBeansProjects\AssemblyProject\Assembly_test'
C:\cygwin64\bin\make.exe -f Makefile CONF=Debug clean
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .clean-conf
make[1]: Entering directory '/cygdrive/c/Users/XXXX/Documents/NetBeansProjects/AssemblyProject/Assembly_test'
rm -f -r build/Debug
rm -f dist/Debug/Cygwin-Windows/assembly_test.exe
make[1]: Leaving directory '/cygdrive/c/Users/XXXX /Documents/NetBeansProjects/AssemblyProject/Assembly_test'
CLEAN SUCCESSFUL (total time: 533ms)
cd 'C:\Users\XXXX\Documents\NetBeansProjects\AssemblyProject\Assembly_test'
C:\cygwin64\bin\make.exe -f Makefile CONF=Debug
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/cygdrive/c/Users/XXXX/Documents/NetBeansProjects/AssemblyProject/Assembly_test'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin-Windows/assembly_test.exe
make[2]: Entering directory '/cygdrive/c/Users/XXXX/Documents/NetBeansProjects/AssemblyProject/Assembly_test'
mkdir -p build/Debug/Cygwin-Windows
as -g -o build/Debug/Cygwin-Windows/main.o main.s
mkdir -p dist/Debug/Cygwin-Windows
gcc -o dist/Debug/Cygwin-Windows/assembly_test build/Debug/Cygwin-Windows/main.o
build/Debug/Cygwin-Windows/main.o:main.s:21:(.stab+0x14): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:23:(.stab+0x20): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x2c): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x38): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x44): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x50): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x5c): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x68): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x74): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x80): relocation truncated to fit: R_X86_64_32 against `.text'
build/Debug/Cygwin-Windows/main.o:main.s:26:(.stab+0x8c): additional relocation overflows omitted from the output
collect2: error: ld returned 1 exit status
make[2]: *** [nbproject/Makefile-Debug.mk:63: dist/Debug/Cygwin-Windows/assembly_test.exe] Error 1
make[2]: Leaving directory '/cygdrive/c/Users/XXXX
/Documents/NetBeansProjects/AssemblyProject/Assembly_test'
make[1]: *** [nbproject/Makefile-Debug.mk:59: .build-conf] Error 2
make[1]: Leaving directory '/cygdrive/c/Users/XXXX/Documents/NetBeansProjects/AssemblyProject/Assembly_test'
make: *** [nbproject/Makefile-impl.mk:40: .build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)
РЕДАКТИРОВАТЬ:
Подробности моего ассемблера следующие:
C:\Users\XXXXX>as --version
GNU assembler (GNU Binutils) 2.29.1.20171006
Copyright (C) 2017 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `x86_64-pc-cygwin'.
РЕДАКТИРОВАТЬ:
После открытия командной строки Cygwin и запуска команд для компиляции и запускапрограммы, я заметил, что я могу запустить как свою сборку, так и коды C.
РЕДАКТИРОВАТЬ:
Я создал новый проект,использовал gcc -S main.c
для создания файла main.s
, и он не смог собрать на Netbeans (Сбой с теми же ошибками об усечении). Я нахожу еще более странным, что я могу использовать команду gcc main.s -o MAIN
в командной строке Windows и создать исполняемый файл (MAIN.exe), который отлично работает (из командной строки) .Итак, это показывает, что мой автоматически сгенерированный ассемблерный код не может быть собран ТОЛЬКО в моей среде Netbeans.
Может кто-нибудь объяснить, пожалуйста, причину такого поведения?
Кроме того, Рамхунд указалчто мой make-файл не указывает на правильное местоположение.Как показано на первом рисунке этого вопроса, я выбираю опцию проекта, которая автоматически создает свой собственный make-файл.Более того, make-файл позволяет моему коду на C прекрасно работать и работать.Проблема возникает только тогда, когда я пытаюсь собрать свои программы сборки на Netbeans. Я просмотрел ссылку Дариуса, и ничего не было сказано об изменении make-файла JUST для программ сборки.