• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
Linuxin 2025

Breadcrumb

  • Hjem
  • forums
  • problemer når der compilers med Makefine

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Valgmuligheder
Af beer | 09.11.2011 12:16

problemer når der compilers med Makefine

Programmering

Jeg har et lille "hallo thread" program:

http://pastebin.com/h5xvJBjt

Jeg kan compile det med gcc/g++ 4.6.2 på debian med brug af:

g++ -std=gnu++0x -pthread trådning.cpp

Når det er compilet på denne måde virker det som det skal.

Når jeg bruger følgende makefile:

http://pastebin.com/U9wLqC2k

compiler den uden warnings/error men når jeg køre den for jeg følgende fejl:

terminate called after throwing an instance of 'std::system_error'

what(): Operation not permitted

Afbrudt (SIGABRT)



Jeg tror det har noget med thread biblioteket og linking at gøre men er ikke sikker.

Nogle som kan guide mig hen til noget fornuftigt?

  • Log in to post comments

Kommentarer2

13 år 6 måneder siden

Permalink

Indsendt af Anonym7 den 9. november 2011 kl. 13:43

Permalink

offhand og uden at teste så

offhand og uden at teste så vil jeg sige de to ting IKKE er ækvivalente.





.cpp.o:

$(CC) $(CFLAGS) -DUNIX -std=gnu++0x -pthread $< -o $@





Det giver ikke megen mening det her.. Du ønsker at kompilere en objekt-fil (går jeg ud fra) og derfor mangler du et flag (-c)



-c instruerer GCC til ikke at samle et færdigt program - dvs. ikke medtage linker-fasen. Når du gør dette skal du samtidigt heller ikke have -pthread med i denne linje (som jeg går ud fra er forkert, i øvrigt, mere om dette senere) fordi dette netop er en instruks til at linke din kode mod et eksternt dynamisk library.



Det vil give mest mening at du lavede følgende ændringer:



kun kompilering, ikke linking



.cpp.o:

$(CC) -c $(CFLAGS) -DUNIX -std=gnu++0x $< -o $@





uændret men bemært $LDFLAGS som jeg går ud fra vi sætter vores linker flag i



$(EXECUTABLE): $(OBJECTS)

$(CC) $(LDFLAGS) $(OBJECTS) -o $@





bemærk at vi smed pthread i variablen der skulle indeholde linker flag



LDFLAGS= -lpthread





Den sidste ting, '-lpthread' versus '-pthread' kan muligvis være forkert. Men i C vil '-lsexy' betyde at linkeren ville lede igennem $LD_LIBRARY_PATH for en fil ved navn 'libsexy.so' (-l er flaget, sexy er argumentet)





Skriv tilbage hvis du har mere. Om ikke andet kan det være andre kan hjælpe dig videre endnu. Men tag og læs kort om kompileringsprocessens forskellige tring så skulle du gerne forstå hvor din første fejl var.

  • Log in to post comments

13 år 6 måneder siden

Permalink

Indsendt af beer den 9. november 2011 kl. 17:15

Permalink

Tak skal du have. Det hjalp.

Tak skal du have. Det hjalp.

  • Log in to post comments

Svar søges

Den er go 0
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0
Linux fra begynder til professionel af O'Reilly 0

Seneste aktivitet

Test 2
2 stk Jolla C2 sælges 1
Det første forumindlæg efter installation af Forum-modulet 8
Vanilla OS 12
Nye forum-indlæg viser sig kun 1 gang 1
Vil alle forumindlæg vise sig to gange 1
Hjælp til remote terminal vindue? 3
PCLinuxOS 19
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3
Virkelig 7
gnome-software? 3
Archer T2U AC600 Wireless Dual Band USB Adapter 26
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 2
Unix's fødsel 2
Linux Mint 13
"Intet realistisk alternativ" - mig i r*ven 1

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad