Не удается скомпилировать C с помощью GCC

#linux #ubuntu #gcc #c #arm

#linux #ubuntu #gcc #c #arm

Вопрос:

Я пытаюсь скомпилировать test.c, как описано в руководстве NanoPi Neo. Однако, когда я пытаюсь запустить команду gcc для компиляции, я получаю это сообщение об ошибке…

 GNU ld (GNU Binutils for Ubuntu) 2.26.1
  Supported emulations:
   armelf_linux_eabi
   armelfb_linux_eabi
/usr/lib/gcc/arm-linux-gnueabihf/5/../../../arm-linux-gnueabihf/crt1.o: In function `_start':
(.text 0x28): undefined reference to `main'
collect2: error: ld returned 1 exit status
  

…команда…

 sudo gcc -Wall -o test.c -lwiringPi -lpthread -Wl,-V
  

… и код, который я пытаюсь скомпилировать…

 #include <wiringPi.h>
int main(void)
{
  wiringPiSetup() ;
  pinMode (7, OUTPUT) ;
  for(;;)
  {
    digitalWrite(7, HIGH) ;
    delay (500) ;
    digitalWrite(7,  LOW) ;
    delay (500) ;
  }
}
  

Могу ли я предположить, что это возможная проблема с привязкой? Я просто не уверен, и я действительно знаю, как это изменить.
Я довольно новичок, когда речь заходит о таких темах, как C, Linux и тому подобное. 🙂

Комментарии:

1. Привет! Добро пожаловать в суперпользователь! Вы уверены, что хотите использовать sudo? И вы уверены, что вам не следует также включать некоторые из них? <stdio.h> <stdlib.h> <stdint.h> (Укажите на любые ошибки, которые я допускаю в своем комментарии! Если кто-то что-нибудь заметил!)

2. Почему вы бы использовали sudo для этого? Вы создаете файл, который не можете изменить самостоятельно.

3. -o Опция определяет выходной файл. Итак, вам повезло, если компилятор не уничтожил test.c. За правильной командой gcc -Wall test.c -o myprogram следуют параметры, которые у вас есть в вашей команде.

Ответ №1:

Вы не указали никаких .c исходных файлов, поскольку в -o нем указан вывод, указанный в @user3386109.

 sudo gcc -Wall test.c -o output_file_name -lwiringPi -lpthread -Wl,-V