Compiler ffmpeg

NeoJF

Membre actif
1 Novembre 2000
485
6
41
1 chance sur 10 comme toi !
rch.web.free.fr
1) Pour ceux qui ne connaissent pas (et n'ont pas lu les forums sur DivX dans Débutants MacOS X et MacOS X), explications :
ffmpeg (j'ai pas l'adresse du site, j'suis au lycée sur des PCs... arghh !)
grin.gif
est un utilitaire en ligne de code (terminal, à priori) permettant encodage/décodage de multiples formats audio/vidéo (dont le DivX, l'OpenDivX, le MP3, le MPEG...)
Il est écrit pour Unix en Open-Source et à priori compilable pour MacOS X.
2) Mon problême : j'ai essayé de le compiler mais là je suis tombé sur plusieurs problêmes :
- erreur de source : gcc ne reconnait pas la définition d'une macro de la forme :
#define dprintf(var,...) printf(var, ##args)
(je crois que c'est ça)
Comme je ne suis pas très calé en programmation (c'est du .c), je ne sais pas ce que ça veut dire ni où est le pbm.
- erreur pour la compilation : le makefile spécifie une commande ar rcs mais l'option s est non valide (sa suppression entraîne l'absence de table des matières dans l'archive, mais c'est corrigeable à la main avec ranlib je crois, d'ailleurs ça a marché après...)
- enfin, il manque le header sys/poll.h
Bilan de la compilation, en ayant supprimé l'appel du header manquant et la définition de dprintf : le compilateur (étape linker je pense) ne connait pas : dprintf (logique), audio_protocol et video_protocol (c'est le poll.h je pense)
Si un amateur peut m'aider, je pense que ça serait bien d'arriver à compiler ce truc.
 
Bonsoir,

J'ai essayé de compiler la ligne
#define dprintf(var,...) printf(var, ##args)

Sur project builder et elle passe sans probleme.

Essai de la remplacer par :

#define dprintf(var,...) printf(var,...)

Pour ton probleme avec POLL.h , je pense qu'il te manque plutot une librairie ou un source C (du genre POLL.C) puisque l'erreur est au link.

Cordialement
 
bon j'ai passé une heure et j'ai obtenu :
il faut utiliser la déclaration de dprintf prévue pour win32 (c'est sous condition #ifdef CONFIG_WIN32) et ça passe
il me manque 2 header (c'est donc pas dans le linker mais dans le préprocesseur, j'mettais planté)
sys/poll.h et getopt.h
sinon, il ya un pbm avec ld pour lier avec la librarie car dprintf est définie 2 fois (mais je m'arrange en suprimant l'une des définitions et ça passe)
mon blocage actuel vient donc des deux headers manquants

Wanted : sys/poll.h getopt.h
grin.gif
 
Bonjour,

Bon désolé, deux explications, soit j'ai foiré le lien soit la page a bougée entre temps.

Le fichier poll.h est censé déclarer les structures et prototypage de la fonction poll()

Une description précise de Poll est donnée
ICI

Apparemment c'est une fonction de communication avec la gestion de fichier du systeme elle est donc (normalement) censée etre livrée avec la distribution UNIX de X.

Je ne l'ai pas non plus sur mon CD developpeur.

Si tu mets l'include de "poll.h" en commentaire que ce passe t'il ?

Cordialement
 
Bon et bien c'est pas gagné.
J'ai fait des recherches sur le site Apple et apparemment c'est ce que je supposais, c'est une erreur dans la distribution de Mac OS X (darwin)

Cette erreur est référencé avec l'ID 2783217 Missing sys/poll.h depuis le 5 novembre.

ICI


Il ne te reste plus qu'a attendre...

Cordialement
 
Hé bien... merci bcp pour toutes ces recherches (que je n'ai même pas mené moi-même
rolleyes.gif
)...
On attendra...
En tout cas, si j'ai la moindre nouvelle, je te prévient.
NB : si je met l'include de poll.h en commentaire j'ai une super liste de fonctions non déclarées qui apparait... Donc, c'est cuit
blush.gif

Merci encore
smile.gif
 
Voici ce que j'obtiens avec un comment sur #include "poll.h"...
Bon courage
grin.gif
grin.gif


gcc -O2 -Wall -g -I./libavcodec -I./libav -c -o ffserver.o ffserver.c
ffserver.c: In function `http_server':
ffserver.c:170: warning: variable `poll_table' is implicitly extern
ffserver.c:203: invalid use of undefined type `struct pollfd'
ffserver.c:203: dereferencing pointer to incomplete type
ffserver.c:204: invalid use of undefined type `struct pollfd'
ffserver.c:204: dereferencing pointer to incomplete type
ffserver.c:204: `POLLIN' undeclared (first use in this function)
ffserver.c:204: (Each undeclared identifier is reported only once
ffserver.c:204: for each function it appears in.)
ffserver.c:205: increment of pointer to unknown structure
ffserver.c:205: arithmetic on pointer to an incomplete type
ffserver.c:215: invalid use of undefined type `struct pollfd'
ffserver.c:215: dereferencing pointer to incomplete type
ffserver.c:216: invalid use of undefined type `struct pollfd'
ffserver.c:216: dereferencing pointer to incomplete type
ffserver.c:217: increment of pointer to unknown structure
ffserver.c:217: arithmetic on pointer to an incomplete type
ffserver.c:224: invalid use of undefined type `struct pollfd'
ffserver.c:224: dereferencing pointer to incomplete type
ffserver.c:225: invalid use of undefined type `struct pollfd'
ffserver.c:225: dereferencing pointer to incomplete type
ffserver.c:225: `POLLOUT' undeclared (first use in this function)
ffserver.c:226: increment of pointer to unknown structure
ffserver.c:226: arithmetic on pointer to an incomplete type
ffserver.c:230: invalid use of undefined type `struct pollfd'
ffserver.c:230: dereferencing pointer to incomplete type
ffserver.c:231: invalid use of undefined type `struct pollfd'
ffserver.c:231: dereferencing pointer to incomplete type
ffserver.c:232: increment of pointer to unknown structure
ffserver.c:232: arithmetic on pointer to an incomplete type
ffserver.c:237: invalid use of undefined type `struct pollfd'
ffserver.c:237: dereferencing pointer to incomplete type
ffserver.c:238: invalid use of undefined type `struct pollfd'
ffserver.c:238: dereferencing pointer to incomplete type
ffserver.c:239: increment of pointer to unknown structure
ffserver.c:239: arithmetic on pointer to an incomplete type
ffserver.c:251: warning: implicit declaration of function `poll'
ffserver.c:251: arithmetic on pointer to an incomplete type
ffserver.c:251: arithmetic on pointer to an incomplete type
ffserver.c:276: invalid use of undefined type `struct pollfd'
ffserver.c:276: dereferencing pointer to incomplete type
ffserver.c:304: increment of pointer to unknown structure
ffserver.c:304: arithmetic on pointer to an incomplete type
ffserver.c: In function `handle_http':
ffserver.c:317: invalid use of undefined type `struct pollfd'
ffserver.c:317: dereferencing pointer to incomplete type
ffserver.c:317: `POLLERR' undeclared (first use in this function)
ffserver.c:317: `POLLHUP' undeclared (first use in this function)
ffserver.c:321: invalid use of undefined type `struct pollfd'
ffserver.c:321: dereferencing pointer to incomplete type
ffserver.c:321: `POLLIN' undeclared (first use in this function)
ffserver.c:348: invalid use of undefined type `struct pollfd'
ffserver.c:348: dereferencing pointer to incomplete type
ffserver.c:352: invalid use of undefined type `struct pollfd'
ffserver.c:352: dereferencing pointer to incomplete type
ffserver.c:352: `POLLOUT' undeclared (first use in this function)
ffserver.c:377: invalid use of undefined type `struct pollfd'
ffserver.c:377: dereferencing pointer to incomplete type
ffserver.c:380: invalid use of undefined type `struct pollfd'
ffserver.c:380: dereferencing pointer to incomplete type
ffserver.c:387: invalid use of undefined type `struct pollfd'
ffserver.c:387: dereferencing pointer to incomplete type
ffserver.c:389: invalid use of undefined type `struct pollfd'
ffserver.c:389: dereferencing pointer to incomplete type
ffserver.c:396: invalid use of undefined type `struct pollfd'
ffserver.c:396: dereferencing pointer to incomplete type
make: *** [ffserver.o] Error 1
blush.gif
blush.gif
blush.gif
 
Ok, ce n'est pas des erreurs de liens mais des erreurs de compilation, ce qui est plus normal, car le fichier "Poll.h" est necessaire à la compilation.

(Pour rappel, les fichiers .h en langage C referment toutes les déclarations de structures et de types de variables.)

Tu peut éventuellement le faire se compiler tout de meme en te redefinissant un fichier Poll.h fictif.

Tu risque cependant d'avoir des erreurs de lien si la librairie contenant les fonctions prototypées dans Poll.h n'est pas présente.

Je ne sais pas quelle est l'importance de ce projet pour toi, si c'est vraiment important, on peut se retrousser les manches et commencer a boucher les trous.

Si tu peut attendre, j'espere qu'Apple va completer Darwin prochainement et que tout rentrera dans l'ordre.

A toi de voir.

Cordialement
 
non, ce projet n'est pas de première importance pour moi, c'est juste que comme personne ne l'a encore porté pour Mac je me suis dit que je pouvais essayer voir si c'était pas trop dur...
je ne devrais pas tarder à avoir des nouvelles de cosx.org à qui j'ai envoyé un message, peut-être qu'il auront déjà eu ce genre de problême
Si tu pense que le boulot à faire pour créer un poll.h fictif est un peu long, je ne voudrais pas abuser de ton temps et dans ce cas j'attendrai qu'Apple corrige son bug (c'est vrai que c'est toi qui fait tout quand même !!!)
Voilà, j'attends juste de savoir si c'est vraiment compliqué à faire (si tu peux m'expliquer en gros ce qu'il faudrait faire - comme tu l'as vu je ne suis pas encore très branché prog...)
enfin, merci pour ton aide
wink.gif
 
Bonjour,

Je ne sais pas quelle est ton expérience de la programmation. Il faut néammoins que tu sache que tu t'attelle a une tache difficile et ingrate: porter une application d'un système sur un autre, surtout écrite par quelqu'un d'autre n'est pas des plus aisé.

Si le fichier Poll.h n'est pas présent dans Darwin c'est peut etre du a un oubli (peu probable) ou simplement au fait que la librairie correspondante n'a pas encore été portée sur le Darwin d'Apple.

Dans ce dernier cas, un Poll.h fantôme te permettra de passer l'étape de la compilation mais pas du lien.

Sincèrement, si tu peut vivre sans, il vaut mieux attendre qu'Apple fournisse le Poll.h avec la librairie adéquate.

Si tu veux aller plus loin néanmoins, fait une archive .sit de ton projet et envoie la moi ([email protected]), j'essaierai de voir si il y a quelque chose a faire.


Cordialement