» »

Makefile in c++

Makefile in c++

]Fusion[ ::

Imam problem z makefile ki mi noče nič naredit.

File pa zgleda tako:

all: nal1 nal2 nal3 nal4

nal1: nal1.cpp
g++ nal1.cpp -o nal1 //tu mam tab, ki je baje nujen

nal2: nal2.cpp
g++ nal2.cpp -o nal2

nal3: nal3.cpp
g++ nal3.cpp -o nal3

nal4: nal4.cpp
g++ nal4.cpp -o nal4

V konzoli zaženem: make 1teden_make Potem pa mi izpiše: Nothing to do for 1teden_make.
Prosil bi za vašo pomoč.
"I am not an animal! I am a human being! I... am... a man!" - John Merrick

]Fusion[ ::

ok sem že rošo. sem spremenil ime v" makefile" pa dela. Zaj bi me še samo zanimalo kak je ukaz v konzoli če imam svoje ime makefile-a?
"I am not an animal! I am a human being! I... am... a man!" - John Merrick

CCfly ::

make -f datoteka
"My goodness, we forgot generics!" -- Danny Kalev

]Fusion[ ::

aha kul, hvala. Mamo v šoli Linuxe pa sem čisto zgublen z to konzolo in ukazi. Winsi so še vedno najboljši :>
"I am not an animal! I am a human being! I... am... a man!" - John Merrick

BigWhale ::

Ja, v soli maste najbrz res vec Linuxov... ja... ;)

Bos videl, ko bos ugotovil, da lahko v konzoli nardis

ps -aux | grep joe | awk ' { print $1 ":" $2 ":" $4 } ' | sed -e 's/joe/blow/g' > mail -s "Joe Abuser" abuse@abuse.com

bos takoj pozabil na windowse..

:P

CCfly ::

hehe :)
Ne vem če jim bojo na UNI kaj dosti povedal o lupini. Mogoče bo na novem 4. letnem programu kakšen ekvivalent RPS 1 visokošolskega programa.
"My goodness, we forgot generics!" -- Danny Kalev

]Fusion[ ::

WTF je toti ukaz??? Že rabiš doktorat da ga dešifriraš :P Drugače pa tuudi jaz dvomim da nam bodo kaj dosti o ukazni lupini povedali. Že tak al tak nam bolj malo pomagajo pri programiranju. Standardni odgovor na vprašanja je: uporabi Google :P
"I am not an animal! I am a human being! I... am... a man!" - John Merrick

CCfly ::

Za tale ukaz ne rabiš ravno doktorata da ga dešifriraš, samo malo znanja.
ps -aux ti vrne listo procesov
| oz. pipe oz. cev se uporablja za veriženje ukazov
grep joe bo listo procesor sfiltrirar na tiste, kjer se pojavlja joe
awk bo iz sfiltrirane liste vzel le 1, 2 in 4. besedo
sed boi zamenjal vse besed joe z besedo blow
> se uporabi za preusmerjanje podatkov
rezultat se preusmeri v program mail, ki bo vsebino poslal na mail abuse@abuse.com s subjectom Joe Abuser

npr kaj se dogaja po korakih.:
(celotne liste ne bom prilepil)

pero 6283 0.0 0.1 1964 880 ? S 13:23 0:00 /bin/sh /etc/X11/Sessio
pero 6287 0.0 0.2 2352 968 ? S 13:23 0:00 /bin/sh /usr/kde/3.3/bi

pero:6283:0.1
pero:6287:0.2

končni rezultat:
blow:6283:0.1
blow:6287:0.2

(no in to pošlje na mail)
"My goodness, we forgot generics!" -- Danny Kalev

64202 ::

Majhen popravek:
ps -aux | grep joe | awk ' { print $1 ":" $2 ":" $4 } ' | sed -e 's/joe/blow/g' | mail -s "Joe Abuser" abuse@abuse.com

ker je mail tudi program. > preusmeritev bi ti naredila mail file.

]Fusion[ ::

Hmm četudi verjetno res ni potrebno kako hudo znanje za take ukaze so mi vseeno winsi bolj všeč. Tam maš vsaj vse lepo razumljivo napisano. :)
"I am not an animal! I am a human being! I... am... a man!" - John Merrick

CCfly ::

Brez komentarja. Ali se boš naučil ali pa te pač ne bo zanimalo. Odločitev je tvoja.
"My goodness, we forgot generics!" -- Danny Kalev

64202 ::

Longhorn namerava imeti 100x bolj zmogljiv (khm:) shell kot unixi. Kaj pa zdaj, vsi v jok pa na drevo? :))

]Fusion[ ::

CCfly: Točno tako :)

64202: Ja MS je že dosti obljubljal
"I am not an animal! I am a human being! I... am... a man!" - John Merrick

Gundolf ::

Ne 64202, zdej pa vsi v jok pa na Linux ;)

BigWhale ::

100x bolj zmogljiv? Kako so pa to zracunali? ;)

Kot kateri shell? tcsh? zsh? ksh? bash? python? :P

Nevem no... ;>

HyprNewton ::

Imam eno preprosto vprašanje (zato nisem šel odpirat nove teme).
V C bi rad prevedel main.c, zaglavno datoteko ter njej pripadajoči c.
Našel sem sintaxo na eni strani vendar ne dela, kje je napaka?

makefile
main: main.c f1.c f1.h
	gcc -o main main.c f1.c -I.


LP

Brane2 ::

druga linija se mora začeti s TAB karakterjem in ne serijo spaceov.

Poglej,d a ti ga editor ne serje in namesto TAB-a not zabriše žnj presledkov.

V midnight Commanderju je ta opcija poimenovana "emulate tabs" ali tako nekako in to mora biti izklopljeno.
On the journey of life, I chose the psycho path.

HyprNewton ::

Brane2 je izjavil:

druga linija se mora začeti s TAB karakterjem in ne serijo spaceov.

Poglej,d a ti ga editor ne serje in namesto TAB-a not zabriše žnj presledkov.

V midnight Commanderju je ta opcija poimenovana "emulate tabs" ali tako nekako in to mora biti izklopljeno.


Tabulator je, saj drugače prevejalnik vrne "*** missing separator. Stop.".

Brane2 ::

Aha. Potem je sumljiv tisti "-I."

Stvar pomeni, da se include fajli iščejo v tekočem direktoriju. Ni nujno, da je ta enak v tvojem primeru tistemu, od koder si kopiral.

Fajn bi bilo navesti konkretno mapo.

Po drugi strani pa niso neveden nobene knjižnice. Gcc AFAIK vključi sam tiste osnovne runtime knjižnice, za vse ostalo pa bi moral poskrbeti sam.

Ta tvoj primer ne uporablja nobenih knjižnic ?

Sem ravnokar probal sam. Meni dela.
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

BigWhale ::

Glede na to, da je kristalna krogla razpokana, bi prosil, ce poves se do kaksne napake pride. :)

fx ::

V mapi imam naslednje dokumente
all\
	cancon.c
	CANtype.h
	KLNtype.h
	LINtype.h
	Makefile
	vci3.h
	vciborl.h
	vciCtrlType.h
	vcierr.h
	vciguid.h
	vciIdType.h
	vcinpl.h
	vcisdk.lib
	vcitype.h
	vciver.h


uporabljam makefile ki izgleda takole:
CC=gcc
CFLAGS=-c -Wall
LIBS= vcisdk.lib
LDFLAGS=-static-libgcc -static-libstdc++
SOURCES=$(wildcard *.c)
OBJECTS=$(SOURCES:.c=.o)

EXECUTABLE=main.exe

all: $(SOURCES) $(EXECUTABLE) 
	
$(EXECUTABLE): $(OBJECTS) 
	$(CC) $(LDFLAGS) $(OBJECTS) -o $@ $(LIBS)
	
.c.o:
	$(CC) $(CFLAGS) $< -o $@


Ko poženem z make -f Makefile mi program javi naslednjo napako :
D:\C++\Can\all>make -f Makefile
g++ -c -Wall cancon.c -o cancon.o
cancon.c: In function 'HRESULT SelectDevice()':
cancon.c:184:57: error: invalid initialization of reference of type 'REFVCIID {aka const _VCIID&}' from expression of type 'VCIID* {aka _VCIID*}'
vcinpl.h:423:25: error: in passing argument 1 of 'HRESULT vciDeviceOpen(REFVCIID, PHANDLE)'
make: *** [cancon.o] Error 1


Delam na windows sistemu in uporabljam mingw.
Do sedaj sem več ali manj uporabljl makefile, ki ni uporabljo nobene zunanje knjižnice, kar predvidevam da je napaka povezana s tem da ni vključena knjižnica
vcisdk.lib, ampak očitno je prav ne vključim da bi prevajalnik vse skupaj prebavil.

Hvala za pomoč.
Lep pozdrav,

fx

fx ::

Malo sem spremenil makefile
CXX=g++
CXXFLAGS=-c -Wall

LIBDIRS=-L"D:/C++/Can/all"
LIBS=-lvcisdk.lib -lm

LDFLAGS=-static-libgcc -static-libstdc++ $(LIBDIRS) $(LIBS)
CXXSOURCES=$(wildcard *.c)
CXXOBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=main

all: $(CXXSOURCES) $(EXECUTABLE) 
	
$(EXECUTABLE): $(CXXOBJECTS) 
	$(CXX) $(LDFLAGS) $(CXXOBJECTS)-o $@
	
.c.o:
	$(CXX) $(CXXFLAGS) $< -o $@
	
run: $(EXECUTABLE)
	./$(EXECUTABLE)	


Sedaj pa mi prevajalnik javi naslednjo napako, ki mi ni logična:
D:\C++\Can\all>make -f Makefile
g++ -static-libgcc -static-libstdc++ -L"D:/C++/Can/all" -lvcisdk.lib -o main
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: cannot find -lvcisdk.lib
collect2.exe: error: ld returned 1 exit status
make: *** [main] Error 1


Saj je vse tako kot sem v prešnjem odgovoru napisal.

Hvala
Lep pozdrav,

fx

fx ::

Sem našel napako ampak naletel na drugo :D

V 5. vrstici prešnji odgovor sem videl da sem naredil napako, namreč napisal sem
LIBS=-lvcisdk.lib
moral pa bi
LIBS=-lvcisdk


Ampak sedaj dobim naslednjo napako, ki pa mi ni naj bolj všeč
D:\C++\Can\all>make -f Makefile
g++ -static-libgcc -static-libstdc++ -L"D:/C++/Can/all" -lvcisdk -o main
D:/C++/Can/all/vcisdk.lib: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
make: *** [main] Error 1


A je mogoče problem to da je ta vcisdk.lib iz primera za borland c? Ima mogoče kdo kaj s tem izkušnj?

Hvala za pomoč
Lep pozdrav,

fx

Looooooka ::

BigWhale je izjavil:

Ja, v soli maste najbrz res vec Linuxov... ja... ;)

Bos videl, ko bos ugotovil, da lahko v konzoli nardis

ps -aux | grep joe | awk ' { print $1 ":" $2 ":" $4 } ' | sed -e 's/joe/blow/g' > mail -s "Joe Abuser" abuse@abuse.com

bos takoj pozabil na windowse..

:P


Potem se bos zbudil, ugotovil, da je leto 2013, instaliral windowse in vtipkal:

$processlist=gwmi win32_process | where{$_.getowner().user -eq 'Joe'} | select @{Expression={$_.getowner().user.Replace("Joe","Bloe")}}, ProcessName
$smtpclient = New-Object Net.Mail.SmtpClient("your.damn.mailserver.net")
$smtpclient.Send("from@moe.net",abuse@abuse.com,"Joe Abuser",$email)

:D

Zgodovina sprememb…

  • spremenilo: Looooooka ()

BigWhale ::

> BigWhale je 27. nov 2004 ob 21:22 izjavil:

No, presenecen bi bil, ce pri MSju v devetih letih ne bi nic naredili na shellu ...

Looooooka ::

Jaz bom bolj presenecen ce bodo v naslednjih 9ih mesecih naredili kaksen update :D
Pri njihovih projektih sem vedno skepticen.
Bolj kot si jih vesel, vecja je moznost, da bos cez 2 meseca bral, da so zadevo ukinili zaradi "insert_bullshit_here".


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

navodila za izgradnjo binarne datoteke

Oddelek: Programiranje
71082 (812) WizmoTo
»

[c++] auto

Oddelek: Programiranje
6714 (556) killa bee
»

[Java] Zagon appleta v HTML

Oddelek: Programiranje
161443 (1265) Bela01
»

[JAVA] branje iz datoteke

Oddelek: Programiranje
242286 (1921) Bela01
»

c++ vstavljanje knjižnice v kodo

Oddelek: Programiranje
161541 (1200) SasoS

Več podobnih tem