Ondersteuning > Programmeren

[ solved ] kan geen executable meer maken.

(1/2) > >>

kuifje09:
Wat er gaande is, geen idee. maar in eerste instantie liep ik op tegen een probleem met eclipse.
Maar...
Het is mogelijk wat anders.

Zelfs het meest simpele helloworld.c compileren gaat niet goed.

Er wordt altijd een shared library gemaakt i.p.v. een executable.

De standaard helloworld.c


--- Code: ---#include<stdio.h>
#include<stdlib.h>

int main(){

printf("hello all\n");

return 0;
};

--- Einde van code ---

compileren : cc myHelloWorld.c -o myHelloWorld -Wall

geeft  vervolgens een "ding" dat ik wel kan executen :  output  >>hello all

maar als ik met file kijk of in de filemanager kijk..( foute ikoon ). dan is het geen executable. In detail is het dan:

myHelloWorld: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=0fc5f76bf3b86f663be3137cd14396772fad94cd, for GNU/Linux 3.2.0, not stripped

Wat kan dat zijn, ik wordt er helemaal tureluurs van...

update: wellicht handig te weten,  gewoon op ubuntu
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"

In de filemanager "File" krijg ik dit als ik op de "executable" click:

There is no application installed for "shared library" files

kuifje09:
Heeft dit er mogenlijk iets mee te maken ?

<url>https://stackoverflow.com/questions/43367427/32-bit-absolute-addresses-no-longer-allowed-in-x86-64-linux<\url>

geen we even testen,  gcc  -fno-pie -no-pie -o ......

Nu hebben we een echte executable. die ook in de "File", dat is dus nautilus, ( waarom zouden we de echte naam verbergen ?) wordt gezien als een executable.  geen shared lib.

Maar wat is de gedachte hierachter ?  Ik bedoel, ergens spoort er iets niet....

Nu testen of we dat in eclipse kunnen platslaan...

bart85:
https://stackoverflow.com/questions/34519521/why-does-gcc-create-a-shared-object-instead-of-an-executable-binary-according-to

Heb je hier iets aan?

kuifje09:
Jammer dat er niet zoveel respons is hier, maar ik ben weer een stapje verder.

Het heeft kennelijk te maken met een andere kijk op de wereld.

Geen idee waar de wereld ineens de andere kant op is gaan draaien, maar simpele programmaas kan ik ik nog tot executable maken,
met de fno-pie en no-pie vlaggen .  Heeft kennelijk iste van doen met "verkeerde" shared libraries?  mijn lichtje gaat hier uit...

Maar de "semie" executables zijn wel op de commandline te starten en lopen alsof het een executable is.

Ik begrijp er geen snars mee van.

kuifje09:
Dank je Bart voor de link.

Ik heb het gelezen, maar kan er niet veel mee. er zijn nog wat platsen waar ik dit soort dingen tegenkom.

Vandaar dat ik wilde compileren met die -fnopie -no-pie. maar als ik dat binnen eclipse gebruik, gaat eclipse klagen.

Dus op de commandline gaat het okee, maar in eclipse :

Building target: helloWorld
Invoking: GCC C Linker
gcc  -o "helloWorld"  ./src/helloWorld.o   
/usr/bin/ld: ./src/helloWorld.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status
make: *** [makefile:43: helloWorld] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie