ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 05/06/2010 - 20:45
נושא ההודעה: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual studio?

היי,
אני מנסה ללנקג' את ffmpeg שקימפלתי עם gcc לחתיכת קוד שמקומפלת תחת ויזואל סטודיו (עם הקומפיילר שלהם 0- ויזואל סטודיו 2010, 64 ביט)

הפעלתי את configure של ffmpeg עם הדגלים הבאים:
configure --enable-memalign-hack --arch=x86_64 --enable-swscale
הקימפול עובר בלי שום בעיות.

ffmpeg כתוב בC, הקוד שלי הוא ב C++, ולכן אני עושה include כך:
קוד:

extern "C" {
#include <libavcodec\avcodec.h>
#include <libavdevice\avdevice.h>
#include <libavformat\avformat.h>
#include <libavutil\avutil.h>
#include <libswscale\swscale.h>
}


כשאני מגיע לקימפול של הקוד שלי, אני מקבל את הודעת השגיאה הבאה:
קוד:
error LNK2019: unresolved external symbol av_close_input_file referenced in function "int __cdecl ffmpeg_first(int,char * * const)" (?ffmpeg_first@@YAHHQEAPEAD@Z)


שמשמעותן היא שהלינקר לא מזהה את הסימבולים (nm של cygwin מוצא אותם בקלות).

קבצי הספרייה הוספו במקום המתאים בויזו'אל סטודיו. (אלו קבצים עם סיומת .a ולא lib)


מה אפשר לעשות כדי לפתור את הבעייה? ניסיתי בערך כל מה שמצאתי.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ik_5לא בפורום כעת ת.הצטרפות: 16/04/2002 · הודעות: 3025 · מיקום: ישראל
 

הודעה פורסם: 05/06/2010 - 21:05
נושא ההודעה:

לקמפל את הקוד שלך ב gcc או לקמפל את הקוד השני ב VC.

יש כמה בעיות, אחד מהן היא ש++C לא אחיד ב ABI שלו בכלל, ולכן אם אתה לא תדע להתאים את ה ABI שלך למה ש GCC עשה או הפוך, אתה לא תצליח לעבוד.

בשל הודעת השגיאה שלך אני חושב שמדובר בבעית ABI.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 05/06/2010 - 22:11
נושא ההודעה:

אני לא חושב שאני יכול להמנע משימוש בשני קומפיילרים שונים.
אני משתמש בספריות של מערכת ההפעלה (opengl.lib ו wsock2.lib, וקצת ב directshow), ו openCV שקומפל בVS.

ffmpeg מתקמפל רק עם gcc, בגלל שויז'ואל סטודיו לא תומך בצורה מלאה בC99.

בהנחה שיש אי תאימות בabi, האם קמפול ffmpeg כ shared library ושימוש ב dllים יפתור את הבעייה?
האם יש דרך לנרמל את ה abi שלהם באיזושהי דרך?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
elcucoלא בפורום כעת ת.הצטרפות: 14/10/2003 · הודעות: 6114 ·
 

הודעה פורסם: 05/06/2010 - 22:11
נושא ההודעה:

ה־name mangling של שני הקומפילרים שונה לחלוטין, לכן לא תוכל לקשר קוד C++‎ של שני הקומפילרים. זה פשוט לא אפשרי. להסברים נוספים קרא כאן:

http://labs.trolltech.com/blogs/2009/08/12/some-thoughts-on-binary-compatibility/
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ik_5לא בפורום כעת ת.הצטרפות: 16/04/2002 · הודעות: 3025 · מיקום: ישראל
 

הודעה פורסם: 05/06/2010 - 22:23
נושא ההודעה:

Anonymous :
אני לא חושב שאני יכול להמנע משימוש בשני קומפיילרים שונים.
אני משתמש בספריות של מערכת ההפעלה (opengl.lib ו wsock2.lib, וקצת ב directshow), ו openCV שקומפל בVS.

ffmpeg מתקמפל רק עם gcc, בגלל שויז'ואל סטודיו לא תומך בצורה מלאה בC99.

בהנחה שיש אי תאימות בabi, האם קמפול ffmpeg כ shared library ושימוש ב dllים יפתור את הבעייה?
האם יש דרך לנרמל את ה abi שלהם באיזושהי דרך?


1. לעבוד עם מהדר אחר שהוא לא VC.
יש כמה בווינדוז.

2. לעבוד בשפות יותר נורמאליות מ ++C
רוב האנשים יודעים לאילו שפות אני מתכוון, אבל אני לא מתכוון לגרום כאן למלחמת שפות, היו מספיק מלחמות השבוע גם בלי זה.

3. לעבוד קשה ולגרום ל ffmpeg להתקמפל ב VC.


ומחקתי את התשובה המקורית שרציתי לשים שהיתה גורמת קצת לעצבים ולרצון להילחם בי כרגיל ...
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 05/06/2010 - 22:23
נושא ההודעה:

הקוד של ffmpeg הוא קוד C טהור, האם זה עוקף את הבעייה של ה name mangling?
האם שימוש בdllים יעקוף את הבעייה? (כלומר, לקמפל את ffmpeg כ dllים)

תודה
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 05/06/2010 - 22:31
נושא ההודעה:

שכחתי סימן קריאה בסוף התודה: תודה!

@ik_5

1. אני לא בטוח שזה יפתור את הבעייה, אני עדיין צריך להשתמש בספריות של מע' ההפעלה.
2. עניין של טעם.. אני גם אוהב את פייטון, אבל לא יעזור לי להשיג את מה שני רוצה לעשות כרגע.
3. מאוד קשה. הקומפיילר של visual studio לא תומך ב C99. המשמעות של צעד כזה היא לייצר פורק מאוד מורכב שייקח המון זמן, לא ייתמך ע"י המפתחים הראשיים, וכנראה גם לא יעבוד..
4. הבחירה בסביבת העבודה וכלי הפיתוח לא תלויה רק בי, אני כנראה הייתי בוחר אחרת (בנתיים הצלחתי להפתר מהתלות ב directX ורוב directshow, כשהשימוש ב ffmpeg אמור לבטל את הצורך בו לחלוטין. בעתיד אולי גם נפתר מVisual studio).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
elcucoלא בפורום כעת ת.הצטרפות: 14/10/2003 · הודעות: 6114 ·
 

הודעה פורסם: 05/06/2010 - 22:42
נושא ההודעה:

מנחם (לא מחובר) :
הקוד של ffmpeg הוא קוד C טהור, האם זה עוקף את הבעייה של ה name mangling?
האם שימוש בdllים יעקוף את הבעייה? (כלומר, לקמפל את ffmpeg כ dllים)

תודה


מה, כאילו להשתמש ב־LoadLibrary ואז לעשות את אותה העבודה שהקומפילר עושה? אם אני לא טועה, זה יכשל בדיוק באותה צורה אבל נסה. תבנה ספרייה קטנה ב־mingw או cygwin ואז נסה לטעון אותה ולקרא לפונקציה שעושה hello world. אם לא - כל הזין, אתה תקוע עם gcc עד הסוף המר כמו שעידו אמר.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
WobnIלא בפורום כעת ת.הצטרפות: 11/09/2004 · הודעות: 2977 · מיקום: beer sheva
 

הודעה פורסם: 05/06/2010 - 23:06
נושא ההודעה:

שאלה, אתה מקמפל על הלינוקס עם GCC ואז מעביר את זה לחלונות?

_________________
קוד:
Gentoo.

Only two things are infinite, the universe and human stupidity and I'm not sure about the former - Albert Einstein

help save the world, join us.

Image
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם Yahoo Messenger  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 05/06/2010 - 23:22
נושא ההודעה:

אם תקמפל את ffmpeg ל DLL אז תוכל להשתמש ב DLL (שיצרת ב GCC) עם כל תוכנית שתרצה. בדוק.

וכמו שאמרו כבר לפני, שימוש של ספריות (libs) ממהדר אחד למהדר שני לעולם לא יעבוד - צורת הבניה (ובעיקר השמות (והפורמט שלהן) של הפונקציות) הוא שונה ממהדר למהדר.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 05/06/2010 - 23:24
נושא ההודעה:

@elcuco
אני אנסה את זה (כנראה שמחר..)

@wobnl
אני מקמפל את זה בחלונות עם cygwin (לפי המדריכים באתר)
http://ffmpeg.arrozcru.org/wiki/index.php?title=Main_Page

ד"א, ניסיתי להשתמש גם ב cygwin וגם ב mingw/msys - אותה תוצאה
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 05/06/2010 - 23:25
נושא ההודעה:

@אורח
מצויין. אני אעשה את זה מחר ואעדכן אתכם
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
שחרלא בפורום כעת ת.הצטרפות: 07/04/2003 · הודעות: 246 ·
 

הודעה פורסם: 06/06/2010 - 00:05
נושא ההודעה:

מנחם (לא מחובר) :
ד"א, ניסיתי להשתמש גם ב cygwin וגם ב mingw/msys - אותה תוצאה


דבר ראשון - msys. לא עם cygwin.

אני הייתי חושד ב- cdecl. מה nm אומר על הספריה שלך? מה אומר dependancy walker (אני לא יודע אם הוא יודע לנתח ספריות סטטיות)?

שחר

http://www.dependencywalker.com/

_________________
שחר שמש
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
elcucoלא בפורום כעת ת.הצטרפות: 14/10/2003 · הודעות: 6114 ·
 

הודעה פורסם: 07/06/2010 - 00:00
נושא ההודעה:

מנחם, מה נסגר? זה עובד אצלך או לא?
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 07/06/2010 - 00:51
נושא ההודעה:

כשלב ביניים הורדתי את media player classic, כדי לראות איך הם מלנקג'ים. (ממשק המשתמש שלהם מקומפל עם visual studio 2008, והם משתמשים ב ffmpeg שמקומפל ב gcc 4.4.1)
הבנייה ב 64 ביט כרגע לא עובדת (יש להם סקריפט שמוריד עוד כמה חלקים מ tdm, הפעם ל 64 ביט).

היה לי יום קצת עמוס- חזרתי לעבוד על זה לפני רבע שעה בערך, ובגלל שאני לא מצליח להתרכז יותר, אנסה להמשיך מחר.

בכל מקרה, ובלי תלות במתי שיהיו תוצאות, אני מבטיח לעדכן.

Cool
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ארתיום ת.הצטרפות: 15/07/2005 · הודעות: 4427 ·
 

הודעה פורסם: 07/06/2010 - 08:57
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu

או קיי, מספר דברים:

- האם הקוד שלך מקומפל ב־64 ביט? אם לא זה לא יעבוד.

הייתי ממליץ להתחיל מ־DLL, בצרה מפתיעה זה יותר פשוט, למעשה, אני משתמש בכמה ספריות C הבנויות עם gcc כשאני עובד עם MSVC, ראה כאן:

http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs

למעשה, אין בעיה לעשות לינק של ספריות C מקומפלות עם gcc ו־msvc.

-----------

הערות לכל אלה שאמרו לפני, קוד C בניגוד לקוד C++‎ כן דב"כ תואם מבחינת ABI.

_________________
קזית 3 - קנופיקס עברי.
BiDiTeX - תמיכה בכיווניות ל-LaTeX.
CppCMS - פיתוח ל־web ב־++C.

גם לי יש בלוג Neutral
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ik_5לא בפורום כעת ת.הצטרפות: 16/04/2002 · הודעות: 3025 · מיקום: ישראל
 

הודעה פורסם: 07/06/2010 - 09:50
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu

ארתיום :

הערות לכל אלה שאמרו לפני, קוד C בניגוד לקוד C++‎ כן דב"כ תואם מבחינת ABI.


אחד הדברים שאני מסביר כבר קרוב ל10 שנים בלמה לא לבחור לתכנת ב VC הוא כי שום דבר לא תואם את ה ABI של VC אלא אם נכתב ב VC.

הבעיה כל כך חמורה, עד שמיקרוסופט עצמם מספקים לך חיבור API של Windows ככקבצים חצי מקומפלים (בסגנון קובץ ה o בלינוקס), כי אחרת פיזית לא היית יכול להתממשק ל API (שכתוב ב C) ב Windows. כן, אני מדבר על הקבצי obj שמגיעים עם VC. במידה והם לא קיימים, למרות שתספק לו מידע איך לקשר את הפונקציות, הוא לא יצליח (ראיתי מספיק חכמולוגים שחשבו שהם חמים עם זה והבינו את זה בדרך הקשה ביותר שיש -> איבדו את המקום עבודה שלהם אחרי שהם לא הצליחו כמה חודשים לגרום לקוד שלהם להתהדר והמשיכו בשלהם). אם בגרסאות חדשות יותר של VC זה סוף כל סוף סודר והוא עובד בגרסה שזה סודר בה, אז תתעלם, אבל ב VC6 שאני הכרתי זו היתה בעיה קשה מאוד.

יותר מזה, בWindows סדר הפרמטרים הנהוג הוא Pascal (לא השפה ! אלא סדר הפרמטרים), ו StdCall, בעוד שביוניקס סדר הפרמטרים הנהוג הוא cdecl . אבל אם הסדר פרמטרים לא היה נכון, הוא היה עדיין מצליח לעשות קישור, רק הטעינה עצמה בזמן ריצה היתה קורסת לו, כי הוא לא היה מצליח להעביר נכון את המידע.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
שחרלא בפורום כעת ת.הצטרפות: 07/04/2003 · הודעות: 246 ·
 

הודעה פורסם: 07/06/2010 - 10:22
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu

ik_5 :
יותר מזה, בWindows סדר הפרמטרים הנהוג הוא Pascal (לא השפה ! אלא סדר הפרמטרים), ו StdCall, בעוד שביוניקס סדר הפרמטרים הנהוג הוא cdecl . אבל אם הסדר פרמטרים לא היה נכון, הוא היה עדיין מצליח לעשות קישור, רק הטעינה עצמה בזמן ריצה היתה קורסת לו, כי הוא לא היה מצליח להעביר נכון את המידע.


לא לגמרי נכון. חלק מנושא ה-parameter passing יש גם name mangeling. ב-Pascal, לדוגמא, הקומפיילר מוסיף @ ומספר אחרי שם הפונקציה, שמתאר את אורך הפרמטרים שמועברים לפונקציה. זה נובע, חלקית, מהעובדה שב-pascal calling convention, הפונקציה היא זו שמסירה את הפרמטרים מהמחסנית, ועל כן חשוב שהקורא והפונקציה יהיו מתואמים, לכל הפחות, לגבי מה הגודל הכולל של הפרמטרים.

על פי הודעת השגיאה, נראה ש-vc כן מצפה ל-name mangeling מסוג כלשהו, וזה מקור בעיית הלינקוג'. לא ברור לי לגמרי מה צריך לעשות כדי לפתור אותה.

שחר

_________________
שחר שמש
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
orgadsלא בפורום כעת ת.הצטרפות: 11/10/2005 · הודעות: 436 ·
 

הודעה פורסם: 07/06/2010 - 13:08
נושא ההודעה:

Anonymous :
אני לא חושב שאני יכול להמנע משימוש בשני קומפיילרים שונים.
אני משתמש בספריות של מערכת ההפעלה (opengl.lib ו wsock2.lib, וקצת ב directshow), ו openCV שקומפל בVS.

ffmpeg מתקמפל רק עם gcc, בגלל שויז'ואל סטודיו לא תומך בצורה מלאה בC99.

בהנחה שיש אי תאימות בabi, האם קמפול ffmpeg כ shared library ושימוש ב dllים יפתור את הבעייה?
האם יש דרך לנרמל את ה abi שלהם באיזושהי דרך?


לא הבנתי מה המניעה לקמפל הכל עם gcc. הספריות של מ"ה נגישות גם עם mingw, וגם directshow (לא יודע כמה הבעיות שמוצגות שם עוד בתוקף, אבל יש גם הסברים איך לקמפל ואיך ללנקג')...
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ארתיום ת.הצטרפות: 15/07/2005 · הודעות: 4427 ·
 

הודעה פורסם: 07/06/2010 - 14:21
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu

ik_5 :
ארתיום :

הערות לכל אלה שאמרו לפני, קוד C בניגוד לקוד C++‎ כן דב"כ תואם מבחינת ABI.


אחד הדברים שאני מסביר כבר קרוב ל10 שנים בלמה לא לבחור לתכנת ב VC הוא כי שום דבר לא תואם את ה ABI של VC אלא אם נכתב ב VC.



זה פשוט לא נכון... קודם כל אין בעיה לקמפל לספריה עם gcc ולעבוד איתה עם msvc ולהפיך כל־עוד מדובר ב־C ולא C++‎ וכמובן גם שניהם משתמשים במכנה משותף של השפות (קרי ללא C99 ש־msvc לא תומך בו).

הקישור שנתתי הוא הוכחה לזה.


ציטוט:
יותר מזה, בWindows סדר הפרמטרים הנהוג הוא Pascal (לא השפה ! אלא סדר הפרמטרים), ו StdCall,


זה לא ממש קשור, מדובר ב־API של win32 וגם gcc וגם msvc מתאימים את ה־calling convention בהתאם.

פונקציות **רגילות** הן לא stdcall, ד"א חלק מקומפיילרים של C++‎ של windows משתמשים גם ב־stdcall לקריאות פוקנקציות C++‎ (לא C).

_________________
קזית 3 - קנופיקס עברי.
BiDiTeX - תמיכה בכיווניות ל-LaTeX.
CppCMS - פיתוח ל־web ב־++C.

גם לי יש בלוג Neutral
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 07/06/2010 - 18:49
נושא ההודעה:

אוקיי, פתרתי את זה בצורה נקניקית לגמרי.
הורדתי את הגרסה האחרונה שקומפלה לwin64 מכאן (גרסה ישנה, אפריל 2010):
http://ffmpeg.arrozcru.org/autobuilds/ffmpeg/mingw-w64/dev/shared/

הוספתי את ה libים, ועכשיו הכל מתקמפל.

באופן כללי:
הבחור שעקבתי אחרי התיעוד שלו החליט שתמיכה ב mingw/msys לא שווה את המאמץ, ומעכשיו מקמפל תחת לינוקס באופן בלעדי:
http://ffmpeg.arrozcru.org/wiki/index.php?title=Main_Page
כך:
http://ffmpeg.arrozcru.org/wiki/index.php?title=Cross-compiling

השלב הבא יהיה לקמפל את זה תחת לינוקס בעצמי (אולי עם vm, כדי לא לעשות restart כל פעם).
בנתיים יש פתרון.

תודה רבה לכולם!
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מנחם (לא מחובר)אורח · ·
 

הודעה פורסם: 09/06/2010 - 02:19
נושא ההודעה:

אוקיי, הפעם פתרתי את זה בצורה מערכתית, וזה לקח יום שלם.
התקנתי מכונה וירטואלית לפי ההנחיות בויקי, והתחלתי לחפור.

התוצאה הסופית היא זו:
(זה העתקה והדבקה מהפורום
http://ffmpeg.arrozcru.com/forum/viewtopic.php?f=1&t=1416&p=4794&sid=64e97150c71d2f8b8407cba84ef2db02#p4794
שם שאלתי לראשונה)

I did it!

I've used cross compilation from an ubuntu virtual machine, as per Ramiro instructions in the wiki, plus some home-made scripts, and some patches.
my directory structure is the following:
קוד:
ffmpeg
-->build
-->ext
-->package
-->scripts
-->svn


Code patches:

קוד:
Index: libswscale/swscale_template.c
===================================================================
--- libswscale/swscale_template.c   (revision 30532)
+++ libswscale/swscale_template.c   (working copy)
@@ -2255,7 +2255,7 @@
     "shrl       $9, %%esi    \n\t"                                              \

static inline void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
-                                        long dstWidth, const uint8_t *src, int srcW,
+                                        x86_reg dstWidth, const uint8_t *src, int srcW,
                                         int xInc)
{
#if ARCH_X86 && CONFIG_GPL
@@ -2404,7 +2404,7 @@
}

static inline void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst,
-                                        long dstWidth, const uint8_t *src1,
+                                        x86_reg dstWidth, const uint8_t *src1,
                                         const uint8_t *src2, int srcW, int xInc)
{
#if ARCH_X86 && CONFIG_GPL


configuration script:

קוד:
cd ../build/

unset PKG_CONFIG_PATH PKG_CONFIG_ALLOW_SYSTEM_CFLAGS PKG_CONFIG_ALLOW_SYSTEM_LIBS
export PKG_CONFIG_LIBDIR="x86_64-w64-mingw32/lib/pkgconfig"

../svn/configure  --cross-prefix=x86_64-w64-mingw32- --cc="ccache x86_64-w64-mingw32-gcc" --extra-cflags=-Dstrtod=__strtod --arch=x86_64 --target-os=mingw32 --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-libgsm --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-shared
cd ../scripts/


packaging script:

קוד:
echo creating directories
mkdir ~/ffmpeg/package/bin
mkdir ~/ffmpeg/package/dll
mkdir ~/ffmpeg/package/lib
mkdir ~/ffmpeg/package/lib/pkgconfig
mkdir ~/ffmpeg/package/include
mkdir ~/ffmpeg/package/include/libswscale
mkdir ~/ffmpeg/package/include/libavutil
mkdir ~/ffmpeg/package/include/libavformat
mkdir ~/ffmpeg/package/include/libavdevice
mkdir ~/ffmpeg/package/include/libavcodec

cp Dll2lib.bat ~/ffmpeg/package/dll/

echo copying binaries
cp ~/ffmpeg/build/*.exe            ~/ffmpeg/package/bin/
# cp ~/ffmpeg/build/libavcodec/libavcodec.a    ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavdevice/libavdevice.a    ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavfilter/libavfilter.a    ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavformat/libavformat.a    ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavutil/libavutil.a    ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavfilter/libavfilter.a    ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libswscale/libswscale.a    ~/ffmpeg/package/lib/

echo copying dlls and defs

cp ~/ffmpeg/build/libavcodec/avcodec.dll    ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavcodec/avcodec-52.def    ~/ffmpeg/package/dll/avcodec.def

cp ~/ffmpeg/build/libavdevice/avdevice.dll    ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavdevice/avdevice-52.def    ~/ffmpeg/package/dll/avdevice.def

cp ~/ffmpeg/build/libavfilter/avfilter.dll    ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavfilter/avfilter-1.def    ~/ffmpeg/package/dll/avfilter.def

cp ~/ffmpeg/build/libavformat/avformat.dll    ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavformat/avformat-52.def    ~/ffmpeg/package/dll/avformat.def

cp ~/ffmpeg/build/libavutil/avutil.dll       ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavutil/avutil-50.def    ~/ffmpeg/package/dll/avutil.def

cp ~/ffmpeg/build/libswscale/swscale.dll    ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libswscale/swscale-0.def    ~/ffmpeg/package/dll/swscale.def


echo copying libavcodec headers
cp ~/ffmpeg/svn/libavcodec/avcodec.h      ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/avfft.h      ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/dxva2.h      ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/opt.h      ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/vaapi.h      ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/vdpau.h      ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/xvmc.h      ~/ffmpeg/package/include/libavcodec/

echo copying libavdevice headers
cp ~/ffmpeg/svn/libavdevice/avdevice.h      ~/ffmpeg/package/include/libavdevice/

echo copying libavformat headers
cp ~/ffmpeg/svn/libavformat/avformat.h      ~/ffmpeg/package/include/libavformat/
cp ~/ffmpeg/svn/libavformat/avio.h      ~/ffmpeg/package/include/libavformat/

echo copying libavutil headers
cp ~/ffmpeg/svn/libavutil/avutil.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/adler32.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/attributes.h      ~/ffmpeg/package/include/libavutil/

cp ~/ffmpeg/svn/libavutil/avstring.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/base64.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/common.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/crc.h         ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/error.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/fifo.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/intfloat_readwrite.h   ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/log.h         ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/mathematics.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/md5.h         ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/mem.h         ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/pixdesc.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/pixfmt.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/rational.h      ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/sha1.h      ~/ffmpeg/package/include/libavutil/

cp ~/ffmpeg/build/libavutil/avconfig.h      ~/ffmpeg/package/include/libavutil/

echo copying libswscale headers
cp ~/ffmpeg/svn/libswscale/swscale.h      ~/ffmpeg/package/include/libswscale/

echo copying ext headers
cp ~/ffmpeg/ext/*.h            ~/ffmpeg/package/


and finally, dll to lib conversion:
קוד:

@echo run this utility from Visual studio command prompt


lib /def:avcodec.def /out:avcodec.lib /machine:x64
lib /def:avdevice.def /out:avdevice.lib /machine:x64
lib /def:avfilter.def /out:avfilter.lib /machine:x64
lib /def:avformat.def /out:avformat.lib /machine:x64
lib /def:avutil.def /out:avutil.lib /machine:x64
lib /def:swscale.def /out:swscale.lib /machine:x64

move /Y *.lib ../lib/


and the libraries finally link.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [מנחם (לא מחובר)]
  2. ik_5
  3. אורח
  4. elcuco
  5. ik_5
  6. אורח [מנחם (לא מחובר)]
  7. אורח [מנחם (לא מחובר)]
  8. elcuco
  9. WobnI
  10. אורח
  11. אורח [מנחם (לא מחובר)]
  12. אורח [מנחם (לא מחובר)]
  13. שחר
  14. elcuco
  15. אורח [מנחם (לא מחובר)]
  16. ארתיום
  17. ik_5
  18. שחר
  19. orgads
  20. ארתיום
  21. אורח [מנחם (לא מחובר)]
  22. אורח [מנחם (לא מחובר)]

Google Ads