Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Vanhan C-ohjelman kääntäminen

Sivun loppuun

lager [18.06.2024 19:00:45]

#

koodit vanhaan dos ohjelmaan c:eet ja h:oot ja makefile on. olen devcpp:n komentorivi ohjelmilla kokeillut kaikkia keinoja, mutta mitään ei tapahdu. ei tule .o/.obj eikä com/exe juttua.
olen noviisi ohjelmoinnissa mutta osaan käyttää asioita ja juttuja.

voin laittaa vaikka kaikki koodit/makefile tänne.

pikaista vastausta odotan. jos joku viitsisi alkaa.
kiitos etukäteen.

mavavilj [18.06.2024 21:01:03]

#

Mitä tarkoittaa mitään ei tapahdu?

lager [18.06.2024 21:32:51]

#

ei tule .o/.obj tai .com/.exe tiedostoa.

lager [18.06.2024 21:43:44]

#

tässä makefile, tämä on niin vanha juttu,,,,,

#picky warning checks
CC = gcc -Wall -W -ansi -pedantic

#CC = gcc

.SUFFIXES: .C .$(OBJEXT)

MYOBJECTS =	\
	ivt.o \
	mszp.o \
	mszpinfl.o \
	support.o

all: ivt2html mszpdump ivtdump

ivt2html: $(MYOBJECTS) ivt2html.o
	$(CC) -o ivt2html ivt2html.o $(MYOBJECTS)

ivtdump: $(MYOBJECTS) ivtdump.o
	$(CC) -o ivtdump ivtdump.o $(MYOBJECTS)

mszpdump: $(MYOBJECTS) mszpdump.o
	$(CC) -o mszpdump mszpdump.o $(MYOBJECTS)

%.o: %.c
	$(CC) -c $*.c

clean:
	rm -rf *.o mszpdump ivtdump ivt2html

#  DO  NOT  DELETE THIS LINE -- make depend depends on it.

Mod. lisäsi kooditagit!

Metabolix [18.06.2024 22:13:18]

#

Ihanko oikeasti on DOS-ohjelmassa tuollainen Makefile, jossa on Unix-komentoja ja kohdetiedoston pääte ei ole exe?

Yksinkertaisesti voit kääntää ohjelman kerrallaan ilman Makefilea, esimerkiksi ivt2html:

gcc -Wall -ansi -pedantic ivt.c mszp.c mszpinfl.c support.c ivt2html.c -o ivt2html.exe

Tai voit tehdä C-projektin, johon otat nuo viisi kooditiedostoa mukaan, ja sen pitäisi kääntyä ihan graafisesta käyttöliittymästä oletusasetuksilla.

Ihan toinen asia tietysti on, kääntyykö vanha DOS-ohjelma Windowsissa ollenkaan tai toimiiko se oikein. Voi olla, että joudut korjaamaan ohjelmaa paljonkin. Windows-kääntäjä ei tuota DOS-ohjelmia.

Joka tapauksessa sellaista vaihtoehtoa ei ole kuin "mitään ei tapahdu", vaan saat vähintään jonkin virheilmoituksen, joka on tärkeä lukea ja kertoa kysymyksissä.

lager [18.06.2024 22:36:33]

#

nothing to done for Makefile.
on maken error

mavavilj [18.06.2024 22:37:19]

#

Yleensä tulee käyttää sellaista kääntäjää tai sellaista versiota, joka on ollut käytössä koodin kirjoittamisen aikana, koska jotain saattaa muuttua myöhemmin.

Ei voida välttämättä taata, että jokin uusi gcc osaa kääntää DOS:lle ohjelman.

Ideaalisti käännät ohjelman samalla versiolla, mille se aiotaan ajettavankin.

Metabolix [18.06.2024 22:38:35]

#

Minkälaista komentoa kokeilit? Huomaathan, että make ei ota parametria, eli ei kuulu kirjoittaa make Makefile vaan pelkästään make. Lisäksi, kuten jo sanoin, tuo Makefile ei näytä DOSille suunnatulta, koska tiedostoille ei ole määritelty päätettä. Tietysti voi olla myös, että jokin make-versio on automaattisesti tulkinnut näihin jonkin päätteen. Suosittelen joka tapauksessa nyt kääntämään ohjelmat suoraan oikealla gcc-komennolla.

lager [18.06.2024 22:43:49]

#

installation problen cannot exec cc1

mavavilj [18.06.2024 22:45:53]

#

Onkohan sinun gcc asennettu oikein? Mitä sanoo gcc --version?

lager [18.06.2024 22:53:03]

#

no input files

lager [18.06.2024 23:15:39]

#

tässä .c

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "support.h"
#include "ivt.h"

/* the main program */
int main(int argc, char **argv) {
    FILE *ivt = fopen(argv[1],"rb");
    ivthdr header;
    globalivtidx index;
    mszpentry *chain=NULL,*t;

    if(!ivt)
	{
        fprintf(stderr,"couldn't open a file for input.\nUsage ivt2html filename\n");
        return 1;
    }

	wvGetivthdr(ivt,&header);

    if(header.Magic!=IVTHEADER)
	{
        fprintf(stderr,"not a ivt file\n");
        return 1;
    }

    fseek(ivt,header.DirectoryStart,SEEK_SET);
	wvGetglobalivtidx(ivt,&index);

    if(index.magic != IVTINDEX)
	{
        fprintf(stderr,"Bad maths. %X != %X\n",index.magic, IVTINDEX);
        exit(1);
    }

    wvGetmszpentryChain(ivt,&chain,&index);

    /* process the files */
    for(t = chain; t; t=t->next)
        wvOutputHtml(ivt,t);

	wvReleasemszpentryChain(&chain);
    fclose(ivt);
	return(0);
}

Metabolix [18.06.2024 23:18:33]

#

Miksi et nyt käytä suoraan gcc-komentoa, kuten jo neuvoin?

lager [18.06.2024 23:21:04]

#

noh.
gcc: installation problem, cannot exec `cc1': No such file or directory

Metabolix [19.06.2024 11:50:41]

#

Ehkä PATH on väärin asetettu tai jotain.

Komentoriviltä kääntämiseen kannattaa kokeilla jotain komentoriviltä käytettäväksi tarkoitettua kuten MSYS2.

mavavilj [19.06.2024 12:09:43]

#

Metabolix kirjoitti:

Ehkä PATH on väärin asetettu tai jotain.

Komentoriviltä kääntämiseen kannattaa kokeilla jotain komentoriviltä käytettäväksi tarkoitettua kuten MSYS2.

Yleensä tämmöisessä kannattaa luultavasti poistaa koko kääntäjän asennus ja sitten tarkastaa, että käyttikö oikeita komentoja. Olen joskus asentanut GNU toolchainin väärin Ubuntu:ssa ja se johtui siitä, että sitä jaetaan eri paikoissa, joista kaikkien paikkojen antama versio ei ole paras tai se ei sovi juuri sinun versioihin. TAI et tehnyt kaikkia step:ejä, mitä asennusohjeissa sanottiin.

Mutta Windows:lla tietysti kannattaa vaan ottaa joku vakiojakelu kuten MSYS2. En muista tarkkaan, mutta minulla on mielikuva, että MSYS2:n asennukseen kuuluu vaihe, jossa pitää konfiguroida PATH.

lager [19.06.2024 19:28:52]

#

tämä on raivostuttavan ihqa.

gcc:llä olen nyt saanut .o tiedoston.
komentorivi oli gcc ivt2html.c


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta