kategoria: ANSI C
[#1] skrośna kompilacja pod win + VS 2012
Hej, robiłem sobie projekt w Visual Studio wg tego poradnika http://www.ppa.pl/programy/nasza-pierwsza-gra-kurs-programowania-amigados-i-c-czesc-1.html

Binarki VBCC przesłał mi asman, wszytsko było dobrze do momentu kompilacji.

Dodałem do patha VBCC oraz zmienna VBCC, tam gdzie powinna być.

Kompilacja wyrzuca:
1>------ Build started: Project: AmigaVS, Configuration: Debug Win32 ------
1>  
1>  Microsoft (R) Program Maintenance Utility Version 11.00.51106.1
1>  Copyright (C) Microsoft Corporation.  All rights reserved.
1>  
1>  	vlink -bamigahunk -Bstatic -CVBCC -nostdlib -s -x  c:/VBCC/targets/m68k-amigaos/lib/startup.o head.o -o head -LC:/VBCC/targets/m68k-amigaos/lib -lvc -lamiga
1>  \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c): In "__Exit":
1>EXEC : error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0x6): Reference to undefined symbol ___DTOR_LIST__.
1>EXEC : error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0xc): Reference to undefined symbol ___DTOR_LIST__.
1>  \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c): In "___main":
1>EXEC : error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0x8a): Reference to undefined symbol ___CTOR_LIST__.
1>EXEC : error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0x90): Reference to undefined symbol ___CTOR_LIST__.
1>NMAKE : fatal error U1077: 'c:\vbcc\bin\vlink.EXE' : return code '0x1'
1>  Stop.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command "nmake /f makefile.mak all" exited with code 2.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Plik makefile.mak:
#
# main
#

CC = vc
CFLAGS =-c -c99 -IC:/VBCC/targets/m68k-amigaos/include/ -IC:/VBCC/include_h/
BIN = head

LIBS =-LC:/VBCC/targets/m68k-amigaos/lib -lvc -lamiga

LINK = vlink -bamigahunk -Bstatic -CVBCC -nostdlib -s -x  c:/VBCC/targets/m68k-amigaos/lib/startup.o
OBJ = head.o
LINKOBJ = head.o
RM = DEL

.PHONY: all clean

all: $(BIN)

clean:
	$(RM) $(OBJ) $(BIN)

	
$(BIN):	$(OBJ) 
	$(LINK) $(LINKOBJ) -o $(BIN) $(LIBS)
	
head.o:	head.c 
	$(CC) $(CFLAGS) head.c -o head.o



Plik head.c:
#include <proto/dos.h>

int main(void){
	Printf("hello");
	return 0;
}


Jakieś pomysły? Podejrzewam, że chodzi o pliki targets, ale próbowałem kilka różnych ze strony autora i cały czas rzuca to samo.
[#2] Re: skrośna kompilacja pod win + VS 2012

@Mir3k, post #1

A spróbuj zamiast proto/dos.h daj stdio.h i zamień Printf na printf z małej litery pisane. W C wielkość liter ma znaczenie.
[#3] Re: skrośna kompilacja pod win + VS 2012

@asman, post #2

z stdio.h wyrzuca to samo. Ten Printf z dużej taki jest w tym proto/dos.h.
[#4] Re: skrośna kompilacja pod win + VS 2012

@Mir3k, post #1

Mysle ze chodzi nie tyle o kompilacje co linkowanie. Na pewno sciezki dostepu do katalogu z bibliotekami sa dobre? I widze ze slashe w sciezkach maz uniksowe / zamiast ms \ - czy windows lyka oba rodzaje zapisow? Na poczatek sprobuj zbudowac taki plik:
int main()
{
return 0;
}


Pozdrawiam
[#5] Re: skrośna kompilacja pod win + VS 2012

@pjk, post #4

Tak vlink łyka i takie, i takie ścieżki.

vc robi sobie plik head.o i potem wysypuje się przy linkowaniu. Skompilowałem ze źródeł najnowszą wersje vlink 0.14a i komunikat jest taki sam. Dla rozjaśnienia sytuacji wklejam to co wychodzi w konsoli:
c:\Users\miros_000\Documents\Visual Studio 2012\Projects\AmigaVS\AmigaVS>vc -vv -IC:/VBCC/targets/m68k-amigaos/include/
-IC:/VBCC/include_h/ test.c -o test.exe
vc frontend for vbcc (c) in 1995-2010 by Volker Barthelmann
flags=1414 opt=1 len=1518
Argument 4:test.c
File "test.c"=2
add_name: "C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.asm"
VBCCm68k "test.c" -o= "C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.asm" -IC:/VBCC/targets/m68k-amigaos/include/ -IC:/V
BCC/include_h/  -O=1 -IC:/VBCC/targets/m68k-amigaos/include/ -IC:/VBCC/include_h/
vbcc V0.9b (c) in 1995-2011 by Volker Barthelmann
vbcc code-generator for m68k/ColdFire V1.8 (c) in 1995-2010 by Volker Barthelmann
add_name: "C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.o"
add_name: "C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.o"
vasmm68k_mot -Fhunk -phxass "C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.asm" -o "C:\Users\MIROS_~1\AppData\Local\Temp
\vbcc068c.o" -IC:/VBCC/include_i/
vasm 1.5b (c) in 2002-2011 Volker Barthelmann
vasm M68k/CPU32/ColdFire cpu backend 1.3 (c) 2002-2011 Frank Wille
vasm motorola syntax module 3.3 (c) 2002-2011 Frank Wille
vasm hunk format output module 2.2 (c) 2002-2010 Frank Wille

CODE(acrx4):               4 bytes
linklen=243
vlink -bamigahunk -t -x -Bstatic -CVBCC -nostdlib -LC:/VBCC/targets/m68k-amigaos/lib/ C:\VBCC\targets\m68k-amigaos\lib\s
tartup.o "C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.o"   -s -Rshort -lvc -lamiga  -o test.exe

Loading files:

C:\VBCC\targets\m68k-amigaos\lib\startup.o (amigahunk object)
C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.o (amigahunk object)
C:\VBCC\targets\m68k-amigaos\lib\vc.lib (amigahunk library)
C:\VBCC\targets\m68k-amigaos\lib\amiga.lib (amigahunk library)

Digesting symbol information:

\VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c): In "__Exit":
Error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0x6): Reference to undefined symbol ___DTOR_LIST__.
Error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0xc): Reference to undefined symbol ___DTOR_LIST__.
\VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c): In "___main":
Error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0x8a): Reference to undefined symbol ___CTOR_LIST__.
Error 21: \VBCC\targets\m68k-amigaos\lib\vc.lib(_main.c) (CODE+0x90): Reference to undefined symbol ___CTOR_LIST__.
Joining selected sections:

Copying CODE:
Copying __MERGED:
Copying DATA:
Copying BSS:
Relocating CODE:
Relocating __MERGED:
Relocating DATA:
Relocating BSS:
vlink -bamigahunk -t -x -Bstatic -CVBCC -nostdlib -LC:/VBCC/targets/m68k-amigaos/lib/ C:\VBCC\targets\m68k-amigaos\lib\s
tartup.o "C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.o"   -s -Rshort -lvc -lamiga  -o test.exe failed
free p->obj
"C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.o"
free p
free p->obj
"C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.asm"
free p
free p->obj
"C:\Users\MIROS_~1\AppData\Local\Temp\vbcc068c.o"
free p

c:\Users\miros_000\Documents\Visual Studio 2012\Projects\AmigaVS\AmigaVS>


Ten plik vc.lib to plik z paczki targets który wcześniej podejrzewałem o psucie mi szyków. Jednak ten sam plik przy tej samej wersji vlink bez problemu się zlinkował pod AmigaOS.
[wyróżniony] [#6] Re: skrośna kompilacja pod win + VS 2012

@Mir3k, post #5

MAM!
w makefile.mak powinno być
LINK = vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -s -x  c:/VBCC/targets/m68k-amigaos/lib/startup.o

zamiast
LINK = vlink -bamigahunk -Bstatic -CVBCC -nostdlib -s -x  c:/VBCC/targets/m68k-amigaos/lib/startup.o

Dobrze by było poprawić to w artykule.

Wielkie dzięki za próby pomocy
[#7] Re: skrośna kompilacja pod win + VS 2012

@Mir3k, post #6

Świetnie, że znalazłeś ten błąd. Jak dobrze pamiętam to nowsza wersja vbcc właśnie wymaga -Cvbcc. W każdym razie zgłosiłem ten błąd ( plus kilka drobnych błędów - jak zmiana linka do archiwum z targets )za pomocą "Zgłoś błąd". Podejrzewam, że wkrótce będą poprawione. Dzięki bardzo.

Pozdrawiam
[#8] Re: skrośna kompilacja pod win + VS 2012

@Mir3k, post #1

Czy można gdzieś znaleźć te binarki, by można było sobie kompilować spod wiersza poleceń?
[#9] Re: skrośna kompilacja pod win + VS 2012

@rafgc, post #8

Wyślij do mnie mejla (jest w profilu) to prześle Ci (najwcześniej jutro z rana ) binarki.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem