Deutsch   English   Français   Italiano  
<slrnvk92t9.360.JKB@hilbert.systella.fr>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!usenet.ovh!news.usenet.ovh!.POSTED!not-for-mail
From: JKB <JKB@hilbert.invalid>
Newsgroups: fr.comp.lang.c
Subject: gcc/linux => mingw/windows/cygwin
Date: Mon, 25 Nov 2024 14:37:29 -0000 (UTC)
Organization: NUO - News.Usenet.Ovh
Message-ID: <slrnvk92t9.360.JKB@hilbert.systella.fr>
Reply-To: <jkb@invalid>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 25 Nov 2024 14:37:29 -0000 (UTC)
Injection-Info: news.usenet.ovh; posting-account="bejo";
	logging-data="2601258"; mail-complaints-to="abuse@usenet.ovh"
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha256:PTcx6IOogm7JA7Gw0VT9oqSk0KT8Y0OQMdNrTlCZ2rQ=
Bytes: 3128
Lines: 74

	Bonjour à tous,

	Je suis en train d'essayer de compiler un bout de code qui
	fonctionne parfaitement sous Linux pour un client qui n'a que
	Windows 10. Il s'agit d'un genre de terminal utilisant GNU/readline,
	sqlite et un pilote fourni par Cypress. J'en ai les sources.

	Pour simplifier le problème, je tente une compilation statique.

	Mon code ne semble pas poser problème. En revanche, il y a un
	problème avec la compilation du code de Cypress.

	J'arrive à compiler tous les .c en .o. Une fois ceci fait, je
	construit une bibliothèque :
	ar r libcyusbserial.a *.o
	ranlib libcyusbserial.a

	Un nm libcyusbserial.a | grep " T " montre que les symboles sont
	définis.

	Sauf que... Côté Linux, nm libcyusbserial.a | grep CyUart
	renvoie :

000000000000592d T CyUartClearDtr
000000000000577d T CyUartClearRts
000000000000557a T CyUartGetHwFlowControl
0000000000005169 T CyUartRead
00000000000055d4 T CyUartSetBreak
0000000000005851 T CyUartSetDtr
0000000000005499 T CyUartSetHwFlowControl
000000000000569f T CyUartSetRts
0000000000005045 T CyUartWrite

	Tout est bon. Côté Windows/Cygwin, la même commande renvoie :
000000000000149f T CyUartClearDtr
00000000000012cc T CyUartClearRts
00000000000010a4 T CyUartGetHwFlowControl
0000000000000cba T CyUartRead
0000000000001103 T CyUartSetBreak
00000000000013b3 T CyUartSetDtr
0000000000000fB0 T CyUartSetHwFlowControl
00000000000011de T CyUartSetRts
0000000000000b93 T CyUartWrite
                 U __imp_CyUartClearDtr
                 U __imp_CyUartClearRts
				 U __imp_CyUartSetDtr
				 U __imp_CyUartSetHwFlowControl
				 U __imp_CyUartSetRts

	Je comprends donc que ces cinq fonctions ne sont pas définies dans
	la bibliothèque.

	En cherchant dans les *.o, ces cinq symboles proviennent de cyusb.c.
	Or la seule fois où CyUartClearDtr() est appelée depuis ce fichier
	est par la ligne suivante :

	CyUartClearDtr (handle);

	Je ne comprends pas pourquoi mingw rajoute __imp_ devant le nom de
	cette fonction.

	La ligne de compilation de ce fichier est la suivante :
	gcc -g -Wall -o libcyusb.o -c cyusb.c -I../../common/header
	(sous Cygwin).

	Je suis preneur de toute lumière.

	Bien cordialement,

	JB


-- 
Si votre demande me parvient en code 29, je vous titiouillerai volontiers
une réponse.