|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
Architecte réseau Inscription : juin 2011 Messages : 14 ![]() |
Bonjour a tous amis développeurs.
Je me présente je suis stagiaire dans une boite de sécurité informatique ou nous développons actuellement une solution de transmission sécurisée de données bref pas besoin d'en dire plus sinon le boss va hurler :p. Pour rentrer plus dans le vif du sujet, disons que le code source est déjà développé et adapté a windows. C'est là ou j'interviens, en effet, j'ai besoin actuellement d'adapter une bibliothèque windows à linux pour en faire plus tard une bibliothèque dynamique partagée. J'aurais donc besoin de vos connaissances en la matière (je ne suis vraiment pas habitué au développement sous linux) et précisément en ce qui concerne l'adaptation de certaines structures windows à linux (ex : LoadLibrary() sous windows équivaut à dlopen() sous linux ...etc) Ainsi vous l'aurez compris j'ai un tas d'instructions windows du genre à traduire sous linux donc s'il existe un tuto ou un site faisant référence aux traductions de ces instructions ou un professionnel parmi vous je suis preneur !! N'hésitez pas à me poser des questions si je n'ai pas été assez clair. Merci et bonne journée à tous |
|
|
01
|
|
|
#2 | ||||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
Citation:
Citation:
mais plus précisément et plus concrètement la meilleure solution est d'écrire un source capable de s'adapter lors de la compilation à son système cible. Je n'ai jamais testé personnellement, les développeurs en diront plus sur le sujet, mais le principe c'est par exemple Code :
donc puisque tu as déjà tous le nécéssaire pour windows, il te manquera effectivement une ou plusieurs libs pour linux et un makefile permettant le portage. voilà pour le principe et ça peut s'appliquer à tous langage compilé . je ne saurai entrer d'avantage dans le détail... je laisse donc le soin aux plus pros en dev de compléter ça... |
||||
|
|
10
|
|
|
#3 |
Architecte réseau Inscription : juin 2011 Messages : 14 ![]() |
Bonjour,
Merci d'avoir répondu aussi vite. L'ennui est que je ne suis pas l'auteur du dit code source sous windows donc pour ce qui est de la remarque sur l'efficacité d'un code quand il dépend le moins possible de l'OS utilisé bah je la ferai au boss Cependant, comme vous l'aurez compris je ne peux ou du moins je ne suis pas autorisé à modifier ce code là, uniquement à adapter le fichier .c correspondant à la bibliothèque du programme windows afin qu'elle puisse correspondre à linux (pour en faire une .so après mais ca c'est pas ce qu'il y a de plus difficile!). Ce qui me bloque vraiment et pourtant j'ai fais beaucoup de recherche à ce sujet sans jamais trouvé une vraie réponse (c'est peut etre qu'il n'y en a pas et dans ce cas je suis un peu mal barré :o) c'est comment changer cette bibliothèque (du moins quelles instructions changer et quels sont leurs équivalents linux) sans avoir pour autant à la réécrire dans son intégralité.. Merci. |
|
|
10
|
|
|
#4 | |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 464 ![]() |
Citation:
Etape 1 : identifier ce qui va poser probleme. Reponse simple : tous les appels de fonction aux librairies windows. Donc si on suppose que tu connais le C, ca te permet d'etablir une liste des fonctions dont tu devras trouver l'equivalent. Etape 2 : trouver les equivalents. Rien d'automatique ici : tu vas devoir prendre les docs MSDN, comprendre ce que font les fonctions, et ensuite chercher l'equivalent Linux. Par exemple pour LoadLibrary, comment as-tu trouve dlopen ? Etape 3 : les fonctions qui n'ont pas d'equivalent Il va t'en manquer quelques unes, probablement parce qu'elles n'ont pas d'equivalents. Dans ce cas, la seule solution qu'il te reste est de re-ecrire la fonction a la main, ou de changer le code Linux pour qu'il fasse ce que tu souhaites. Compilation, edition de lien, et hop, ca roule. Ou presque Pourquoi ou presque : tu fais quoi de ton code : est-ce que tu fais deux fichiers source distincts, ou bien un seul plus complexe ? Si tu en fais deux, alors tu auras le probleme de la maintenance et de l'evolution : ton programme sera fige dans sa version actuelle, a moins de gros efforts pour porter les modifications sur l'autre fichier - et il en est de meme pour les bugs. Si tu as un seul fichier, avec par exemple des sections #ifdef WIN32, alors tu vas te rendre compte que cela n'est possible que si le code est tres tres semblable - par exemple un appel de fonction qui differe de temps en temps. Si c'est tout ton code qui differe, oublie cette solution. La vraie solution propre, c'est de faire du code portable pour toutes les cibles visees. Cela suppose de ne pas s'appuyer sur les fonctionalites proposes par l'un ou l'autre des OS, et donc de redevelopper la partie Windows. |
|
|
|
20
|
|
|
#5 |
Architecte réseau Inscription : juin 2011 Messages : 14 ![]() |
Ouep merci beaucoup je m'y suis déjà mit je bouffe de la doc msdn concernant la gestion des threads et j'essaie de trouver les équivalents linux.
Merci à tous pour votre aide je pense revenir très bientôt si jamais j'ai besoin de vous pour l'édition des liens
|
|
|
10
|
|
|
#6 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 464 ![]() |
Tant que tu n'as pas regle la question de comment architecturer le code, ca ne sert pas a grand chose de connaitre les equivalents des fonctions.
|
|
|
10
|
|
|
#7 |
Architecte réseau Inscription : juin 2011 Messages : 14 ![]() |
J'y suis presque je voulais savoir s'il existe une instruction autre que __dllexport propre à windows qui indique que je souhaite exporter telle ou telle fonction
Merci |
|
|
01
|
|
|
#8 | |
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 457 ![]() |
Citation:
J'ai déjà fait ce genre de travail !! C'est "marrant", ça m'a appris à découvrir Linux : threads avec la synchro (mutex, semaphore), le réseau ... Vive les #ifdef WIN32 !!!
|
|
|
|
10
|
|
|
#9 |
Architecte réseau Inscription : juin 2011 Messages : 14 ![]() |
Exactement !! sauf que bon je ne trouve pas ca aussi marrant que toi
|
|
|
01
|
|
|
#10 |
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 457 ![]() |
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com