كيف أقوم بتجميع mod_dontdothat على نظام التشغيل Windows
سؤال
يبدو أنني لا أستطيع تجميع mod_dontdothat على نظام التشغيل Windows.هل تمكن أحد من تحقيق هذا؟
يحرر:
لقد حاولت تجميع الملف وفقًا للملف التمهيدي الموجود على الموقع وحاولت إضافة libs إضافية لتقليل أخطاء الارتباط.لقد قمت بتثبيت ما يلي:
- أباتشي 2.2.9
- فيجوال ستوديو 2008
- ActivePerl
- apxs-win32 من ApacheLounge
- libs التخريب والرؤوس
أقوم بتشغيل سطر الأوامر التالي:
C:\Program Files\Apache Software Foundation\Apache2.2\bin>apxs -c -I ..\include\ svn_config.h -L ..\lib -L C:\Progra~1\Micros~1.0\VC\lib -l apr-1.lib -l aprutil- 1.lib -l svn_subr-1.lib -l libapr-1.lib -l libaprutil-1.lib -l libhttpd.lib -l l ibsvn_subr-1.lib -l mod_dav.lib mod_dontdothat.c
ثم أحصل على الأخطاء التالية:
cl /nologo /MD /W3 /O2 /D WIN32 /D _WINDOWS /D NDEBUG -I"C:\PROGRA~1\APACHE~ 1\Apache2.2\include" /I"..\include\svn_config.h" /c /Fomod_dontdothat.lo mod_d ontdothat.c mod_dontdothat.c link kernel32.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"C:\PRO GRA~1\APACHE~1\Apache2.2\lib" /out:mod_dontdothat.so /libpath:"..\lib" /libpat h:"C:\Progra~1\Micros~1.0\VC\lib" apr-1.lib aprutil-1.lib svn_subr-1.lib libapr -1.lib libaprutil-1.lib libhttpd.lib libsvn_subr-1.lib mod_dav.lib mod_dontdot hat.lo Creating library mod_dontdothat.lib and object mod_dontdothat.exp mod_dontdothat.lo : error LNK2019: unresolved external symbol _dav_svn_split_uri @32 referenced in function _is_this_legal svn_subr-1.lib(io.obj) : error LNK2001: unresolved external symbol __imp__libint l_dgettext svn_subr-1.lib(subst.obj) : error LNK2001: unresolved external symbol __imp__lib intl_dgettext svn_subr-1.lib(config_auth.obj) : error LNK2001: unresolved external symbol __im p__libintl_dgettext svn_subr-1.lib(time.obj) : error LNK2001: unresolved external symbol __imp__libi ntl_dgettext svn_subr-1.lib(nls.obj) : error LNK2001: unresolved external symbol __imp__libin tl_dgettext svn_subr-1.lib(dso.obj) : error LNK2001: unresolved external symbol __imp__libin tl_dgettext svn_subr-1.lib(path.obj) : error LNK2001: unresolved external symbol __imp__libi ntl_dgettext svn_subr-1.lib(prompt.obj) : error LNK2001: unresolved external symbol __imp__li bintl_dgettext svn_subr-1.lib(error.obj) : error LNK2019: unresolved external symbol __imp__lib intl_dgettext referenced in function _print_error svn_subr-1.lib(config.obj) : error LNK2001: unresolved external symbol __imp__li bintl_dgettext svn_subr-1.lib(utf.obj) : error LNK2001: unresolved external symbol __imp__libin tl_dgettext svn_subr-1.lib(cmdline.obj) : error LNK2001: unresolved external symbol __imp__l ibintl_dgettext svn_subr-1.lib(utf.obj) : error LNK2019: unresolved external symbol __imp__libin tl_sprintf referenced in function _fuzzy_escape svn_subr-1.lib(path.obj) : error LNK2001: unresolved external symbol __imp__libi ntl_sprintf svn_subr-1.lib(cmdline.obj) : error LNK2019: unresolved external symbol __imp__l ibintl_fprintf referenced in function _svn_cmdline_init svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp __SHGetFolderPathA@20 referenced in function _svn_config__win_config_path svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp __SHGetFolderPathW@20 referenced in function _svn_config__win_config_path svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp __RegCloseKey@4 referenced in function _svn_config__parse_registry svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp __RegEnumKeyExA@32 referenced in function _svn_config__parse_registry svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp __RegOpenKeyExA@20 referenced in function _svn_config__parse_registry svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp __RegQueryValueExA@24 referenced in function _parse_section svn_subr-1.lib(config_win.obj) : error LNK2019: unresolved external symbol __imp __RegEnumValueA@32 referenced in function _parse_section svn_subr-1.lib(win32_xlate.obj) : error LNK2019: unresolved external symbol __im p__CoUninitialize@0 referenced in function _svn_subr__win32_xlate_open svn_subr-1.lib(win32_xlate.obj) : error LNK2019: unresolved external symbol __im p__CoInitializeEx@8 referenced in function _svn_subr__win32_xlate_open svn_subr-1.lib(win32_xlate.obj) : error LNK2019: unresolved external symbol __im p__CoCreateInstance@20 referenced in function _get_page_id_from_name svn_subr-1.lib(nls.obj) : error LNK2019: unresolved external symbol __imp__libin tl_bindtextdomain referenced in function _svn_nls_init svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _inflate referenced in function _read_handler_gz svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _inflateI nit_ referenced in function _read_handler_gz svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _deflate referenced in function _write_handler_gz svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _deflateI nit_ referenced in function _write_handler_gz svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _deflateE nd referenced in function _close_handler_gz svn_subr-1.lib(stream.obj) : error LNK2019: unresolved external symbol _inflateE nd referenced in function _close_handler_gz mod_dontdothat.so : fatal error LNK1120: 21 unresolved externals apxs:Error: Command failed with rc=6291456 .
أنا لست خبيرًا في لغة C، لذا فإن أي مساعدة في العثور على هذه الرموز الخارجية التي لم يتم حلها ستكون موضع تقدير كبير!
المحلول
تمكنت من تجميع الوحدة.المتطلبات الأساسية:
- أباتشي 2.2.11
- apxs-win32 من www.apachelounge.com
- فيجوال ستوديو 2005
- بيرل النشط 5.8.8 (تحتاج إلى بيرل لتثبيت apxs-win32)
هنا دليل خطوة بخطوة.قم بتنزيل هذه الحزم:
- http://subversion.tigris.org/files/documents/15/44595/svn-win32-1.5.5_dev.zip (نحتاج إلى المكتبات وملفات الرأس من هذه الحزمة)
- http://subversion.tigris.org/downloads/subversion-1.5.5.zip (سنستخدم
mod_dav_svn
مصادر لتجميع lib ثابت)
قم بفك حزمة التطوير إلى c:\temp\svn
والحزمة الأخرى ل c:\temp\svn-src
و ال mod_dontdothat
الملفات الى C:\Temp\dontdothat
.
واحدة من التبعيات mod_dontdothat
الوحدة هي mod_dav_svn
وحدة.لسوء الحظ ستجد mod_dav_svn
ثنائي فقط كمكتبة مشتركة (DLL).لا يمكنك الارتباط مع DLL.لذا فإن الخطوة الأولى هي بناء ثابت mod_dav_svn
مكتبة:
cd C:\Temp\svn-src\subversion\mod_dav_svn
apxs -c -I ..\include -L C:\Temp\svn\lib -l libsvn_delta-1.lib -l libsvn_diff-1.lib -l libsvn_fs-1.lib -l libsvn_fs_base-1.lib -l libsvn_fs_fs-1.lib -l libsvn_fs_util-1.lib -l libsvn_repos-1.lib -l libsvn_subr-1.lib -l libapr-1.lib -l libaprutil-1.lib -l libhttpd.lib -l mod_dav.lib -l xml.lib -n mod_dav_svn mod_dav_svn.c activity.c authz.c deadprops.c liveprops.c lock.c merge.c mirror.c repos.c util.c version.c reports\dated-rev.c reports\file-revs.c reports\get-locations.c reports\get-location-segments.c reports\get-locks.c reports\log.c reports\mergeinfo.c reports\replay.c reports\update.c
سيقوم استدعاء apxs بطباعة الأوامر التي ينفذها.الأمر الأخير هو استدعاء الارتباط الذي ينشئ ملف DLL.انسخه واستبدل "link" بـ "lib"، وأزل المعلمة "/dll"، وقم بتغيير اسم الملف المعلم "out" إلى "libmod_dav_svn.lib
".يجب أن تحصل على شيء مشابه لـ:
lib kernel32.lib /nologo /subsystem:windows /machine:I386 /libpath:"C:\PROGRA~1\APACHE~1\Apache2.2\lib" /out:libmod_dav_svn.lib /libpath:"C:\Temp\svn\lib" libsvn_delta-1.lib libsvn_diff-1.lib libsvn_fs-1.lib libsvn_fs_base-1.lib libsvn_fs_fs-1.lib libsvn_fs_util-1.lib libsvn_repos-1.lib libsvn_subr-1.lib libapr-1.lib libaprutil-1.lib libhttpd.lib mod_dav.lib xml.lib reports\update.lo reports\replay.lo reports\mergeinfo.lo reports\log.lo reports\get-locks.lo reports\get-location-segments.lo reports\get-locations.lo reports\file-revs.lo reports\dated-rev.lo version.lo util.lo repos.lo mirror.lo merge.lo lock.lo liveprops.lo deadprops.lo authz.lo activity.lo mod_dav_svn.lo
سوف تحصل على بعض التحذيرات الارتباط.يمكنك تجاهلهم.انسخ ال libmod_dav_svn.lib
إلى mod_dontdothat
الدليل.الآن ابدأ عملية التجميع لـ mod_dontdothat
:
C:\Temp\dontdothat
apxs -c -I C:\Temp\svn\include -L C:\Temp\svn\lib -l libsvn_subr-1.lib -l libapr-1.lib -l libaprutil-1.lib -l libhttpd.lib -l mod_dav.lib -l xml.lib -l libmod_dav_svn.lib mod_dontdothat.c
apxs -i -n dontdothat mod_dontdothat.so
هذا ينبغي أن تفعل خدعة.
نصائح أخرى
غوغلينغ حول لقد حصلت
mod_dav_svn.lib
ل_dav_svn_split_uri
intl3_svn.lib
لكل الأشياء_libintl
shell32.lib
لـ SHGetFolderPathadvapi32.lib
لReg
الاشياء istryole32.lib
لCoInitialize
وهذا مثلهinflate
وdeflate
رائحة مثلzlib1.lib
أو شيء من هذا القبيل
امل ان يساعد.
شكرا لمراجعة السؤال.
يبدو وكأنه مشكلة رابط محددة.أرى أن الرمز الأول غير المحدد مرتبط بـ webdav.هل أنت متأكد من أن لديك تلك المكتبة في المكان الصحيح؟أرى أنك تعطي مسارًا طويلًا لطيفًا مع الكثير من svn libs، ربما من الممكن أنك أغفلت واحدًا فقط؟