Προς το περιεχόμενο

mingw-w64-ffmpeg (AUR)


Sant

Προτεινόμενες αναρτήσεις

Οταν χτίζω το mingw-w64-ffmpeg (AUR) παράγει ffmpeg shared με shared τις εξωτερικές βιβλιοθήκες των τρίτων προγραμμάτων.

Υπάρχει κάποιος τρόπος να επιλέγω ποιές από τις βιβλιοθήκες των τρίτων προγραμμάτων θέλω να συνδεθούν ως στατικές και ποιές ως δυναμικές;

Έκανα κάποιες δοκιμές και διέγραψα τις δυναμικές βιβλιοθήκες (.dll.a) από τα /usr/i686-w64-mingw32/lib ή /usr/x86-64-w64-mingw32/lib αφήνοντας μόνο τις στατικές βιβλιοθήκες (.a)

Αυτό που παρατήρησα είναι ότι κάποιες βιβλιοθήκες δέχονται την διαγραφή ενώ άλλες δεν την δέχονται.

Για παράδειγμα η libfdk_aac ή SDL2 δέχονται τη διαγραφή και το ffmpeg build παράγει ffmpeg shared  και στατικές-ενσωματωμένες τις 2 αυτές βιβλιοθήκες.

Οι libfontconfig ή libfreetype2 δεν δέχονται τη διαγραφή, το ffmpeg build σταματάει με εμφάνιση σφάλματος "το pkg-config does not found fontconfig ( ή freetype κατά περίπτωση). Και ναι οι στατικές του βιβλιοθήκες είναι κανονικά στο folder όμως για κάποιο λόγο δεν τις βλέπει.....

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θέλω να φτιάξω ένα πολύ ελαφρύ ffmpeg μόνο με τις βιβλιοθήκες που πραγματικά χρησιμοποιώ ή με ενδιαφέρουν.

Μέσω των Windows η διαδικασία είναι εξαιρετικά χρονοβόρα, τόσο με το ffmpeg-windows-build-helpers (σε ενημέρωση εκδόσεων ακολουθεί τη λογική Debian - μερικές εκδόσεις πίσω για να είναι "σταθερό" - δεν την ασπάζομαι αυτή τη λογικη), όσο και με το Media-Autobuild_Suite (αυτό σε θέμα εκδόσεων είναι απείρως καλύτερο).

Μέσω του Linux η διαδικασία είναι ταχύτατη. Το αποτέλεσμα σε δοκιμαστικό build με ικανοποιεί. Δημιουργεί όμως ffmpeg shared για τις δικές του βιβλιοθήκες και για τις βιβλιοθήκες τρίτων προγραμμάτων και για τις βιβλιοθήκες του gcc.

Το ζήτημα με τις shared βιβλιοθήκες του gcc μπόρεσα να το ξεπεράσω προσθέτοντας στο PKGBUILD τα ακόλουθα:

      --extra-ldflags="-I/usr/${_arch}/include  -static-libgcc -static-libstdc++" \
      --extra-libs="-lwinpthread" 

Στο ζήτημα όμως των βιβλιοθηκών τρίτων προγραμμάτων δεν έχω βρει λύση. Μέχρι και τους διακόπτες -Wl -Bstatic -lonomalib που χρησιμοποίησα δεν φαίνεται να επηρεάζουν το τελικό αποτέλεσμα, ffmpeg shared με shared βιβλιοθήκες τρίτων προγραμμάτων.

Στη δοκιμή να παραχθεί απόλυτο ffmpeg static δεν υπήρχε πρόβλημα, απλά χρησιμοποιώντας:

      --pkg-config-flags="--static" \

      --extra-ldflags="-I/usr/${_arch}/include -static " \

Χρησιμοποιώ τη συγκεκριμένη έκδοση, επειδή λόγω του Arch μου είναι εύκολο να παρακολουθώ τη δημοσίευση νέων εκδόσεων και να έχω το custom ffmpeg πάντα up to date.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...