Puncte:1

Problemă de compilare GCC

drapel es

Tocmai am descărcat compilarea GCC pentru C/C++. După compilarea cu comanda gcc principal.c -c -lGL -lGLU -lglut Primesc o eroare de permisiune care poate fi remediată prin schimbarea permisiunilor. Apoi primesc această eroare: bash: ./main.o: nu se poate executa fișierul binar: eroare de format Exec. Mă ajuți să repar asta? De asemenea, dacă mă ajută, folosesc C.

-Multumesc anticipat

mchid avatar
drapel bo
Se pare că ar putea fi o arhitectură greșită: https://askubuntu.com/q/648555 . Ce returnează `file ./main.o`? sau dacă `main.o` nu se află în directorul curent, găsiți fișierul și apoi executați comanda `file` pe `main.o` pentru a arăta ce tip de fișier este.
mchid avatar
drapel bo
Este posibil să fi fost compilat pentru o arhitectură greșită, dar ar putea exista și alte motive. De asemenea, ați instalat GCC rulând `sudo apt install build-essential`? Acesta este modul recomandat de a descărca și instala GCC.
drapel hr
După compilarea **cum**, mai exact? Faptul că comanda dvs. a produs un fișier `.o` sugerează că ați adăugat opțiunea `-c`, care suprimă legătura la un fișier executabil final
Dequog avatar
drapel es
@mchid Idk Am uitat cum am instalat compilatorul gcc, dar am instalat pachetul `build-essential` după dacă asta face diferența
Dequog avatar
drapel es
@steeldriver Am actualizat întrebarea cu comanda exactă pe care am folosit-o
drapel hr
@Dequog dreapta - deci eliminați `-c` (și opțional adăugați `-o progname` dacă doriți ca executabilul să fie numit `progname` mai degrabă decât implicit `a.out`).
Dequog avatar
drapel es
@steeldriver acum primesc această eroare: `/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1. o: în funcția _start': (.text+0x24): referință nedefinită la „principal” collect2: eroare: ld a returnat 1 stare de ieșire`
drapel hr
`main.cpp` conține de fapt o funcție `main`? Este **cu adevărat** C sau este C++ (după cum sugerează sufixul `.cpp`)? Dacă acesta din urmă, utilizați `g++` în loc de `gcc`. Dacă primul (C cu un sufix `.cpp`) poate fi necesar să adăugați `-xc` pentru a direcționa gcc în mod corespunzător.
Dequog avatar
drapel es
scuze, am vrut să pun `main.c` și da, conține funcția `main()`, de asemenea, comanda `-xc` nu face nimic
waltinator avatar
drapel it
Ai descărcat compilatorul C dintr-o sursă non-Ubuntu? De ce să nu folosiți compilatorul C din sistemul de ambalare?
Dequog avatar
drapel es
@waltinator Am folosit compilatorul c din sistemul de ambalare
mchid avatar
drapel bo
[Ajută acest lucru?](https://stackoverflow.com/a/7965472)
Dequog avatar
drapel es
@mchid nu pentru că 1. Am definit o funcție principală 2. comanda mea originală are partea `-c` care provoacă cealaltă problemă
drapel kn
Nu înțeleg de ce trebuia descărcat compilatorul. Înțeleg că gcc este încorporat în toate versiunile de desktop Ubuntu.
Dequog avatar
drapel es
@NickT Hei, îmi pare rău că mi-a luat atât de mult să răspund, dar nu compilatorul gcc nu a fost instalat automat pentru mine. Are ceva de-a face cu mine folosind versiunea LTS
drapel kn
Se pare că am pus aceeași întrebare anul trecut. Opiniile variază în ceea ce privește dacă a fost încorporat. Vezi https://askubuntu.com/questions/1276468/does-ubuntu-20-04-1-lts-not-come-with-a-c-compiler-by-default
Dequog avatar
drapel es
Doar că trebuie să salvez fișierul, îmi pare rău
ADBeveridge avatar
drapel lb
Când am compilat un program în Ubuntu, apoi am mutat proiectul (a fost bazat pe mezon) în Raspberry Pi, acest avertisment a fost tipărit. Soluția a fost reconstruirea.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.