كيف أقوم بتجميع mod_dontdothat على نظام التشغيل Windows

StackOverflow https://stackoverflow.com/questions/74883

  •  09-06-2019
  •  | 
  •  

سؤال

يبدو أنني لا أستطيع تجميع mod_dontdothat على نظام التشغيل Windows.هل تمكن أحد من تحقيق هذا؟

يحرر:

لقد حاولت تجميع الملف وفقًا للملف التمهيدي الموجود على الموقع وحاولت إضافة libs إضافية لتقليل أخطاء الارتباط.لقد قمت بتثبيت ما يلي:

  1. أباتشي 2.2.9
  2. فيجوال ستوديو 2008
  3. ActivePerl
  4. apxs-win32 من ApacheLounge
  5. 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، لذا فإن أي مساعدة في العثور على هذه الرموز الخارجية التي لم يتم حلها ستكون موضع تقدير كبير!

هل كانت مفيدة؟

المحلول

تمكنت من تجميع الوحدة.المتطلبات الأساسية:

هنا دليل خطوة بخطوة.قم بتنزيل هذه الحزم:

قم بفك حزمة التطوير إلى 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 لـ SHGetFolderPath
  • advapi32.lib ل Regالاشياء istry
  • ole32.lib ل CoInitialize وهذا مثله
  • inflate و deflate رائحة مثل zlib1.lib أو شيء من هذا القبيل

امل ان يساعد.

شكرا لمراجعة السؤال.

يبدو وكأنه مشكلة رابط محددة.أرى أن الرمز الأول غير المحدد مرتبط بـ webdav.هل أنت متأكد من أن لديك تلك المكتبة في المكان الصحيح؟أرى أنك تعطي مسارًا طويلًا لطيفًا مع الكثير من svn libs، ربما من الممكن أنك أغفلت واحدًا فقط؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top