gcc/linux => mingw/windows/cygwin

Liste des GroupesRevenir à fcl c  
Sujet : gcc/linux => mingw/windows/cygwin
De : JKB (at) *nospam* hilbert.invalid (JKB)
Groupes : fr.comp.lang.c
Date : 25. Nov 2024, 15:37:29
Autres entêtes
Organisation : NUO - News.Usenet.Ovh
Message-ID : <slrnvk92t9.360.JKB@hilbert.systella.fr>
User-Agent : slrn/1.0.3 (Linux)
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.

Date Sujet#  Auteur
25 Nov 24 * gcc/linux => mingw/windows/cygwin4JKB
25 Nov 24 +- Re: gcc/linux => mingw/windows/cygwin1Olivier Miakinen
10 Dec 24 `* [repost] Re: gcc/linux => mingw/windows/cygwin2Olivier Miakinen
11 Dec 24  `- Re: [repost] Re: gcc/linux => mingw/windows/cygwin1JKB

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal