You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-user@logging.apache.org by Juan Felipe Mogollón Rodríguez <fm...@vicomtech.org> on 2010/02/15 09:17:47 UTC

Fwd: Building log4cxx with MinGW

Hi to all.

I have been trying to build lo4cxx using MinGW for I a while and I
have found the right way to do it.

I have seen several mail-list messages asking for this question and I
haven't found any right way to do it so I will explain the way I did
it in case you are interested:

I hope that you find this useful

I mainly followed theese instructions:

http://wiki.apache.org/logging-log4cxx/MSWindowsBuildInstructions

When I was required to checkout svn reppositories from apr and
apr-util I downloaded

http://apache.rediris.es/apr/apr-1.3.9.tar.gz
http://apache.rediris.es/apr/apr-util-1.3.9.tar.gz

and follewd main instructions

When I was trying to build apr-util i got this assertion error:

Traceback (most recent call last):
 File "build/gen-build.py", line 238, in ?
   main()
 File "build/gen-build.py", line 131, in main
   objects, _unused = write_objects(f, legal_deps, h_deps, files)
 File "build/gen-build.py", line 185, in write_objects
   assert file[-2:] == '.c'
AssertionError


I solved it editing

..\apr-util\build.conf file

There is an ldap reference at the end of the file:


[ldap]
paths = ldap/apr_ldap_init.c \
      ldap/apr_ldap_option.c \
      ldap/apr_ldap_rebind.c
target = ldap/apr_ldap.la

I had to delete the ending \ so I got this file ending:

[ldap]
paths = ldap/apr_ldap_init.c
      ldap/apr_ldap_option.c
      ldap/apr_ldap_rebind.c
target = ldap/apr_ldap.la

This helped me a little :)

http://marc.info/?l=apr-dev&m=125294339507390&w=2

This should make apr-util to build correctly.


Whe I was "finally" trying to build log4cxx I got this error:

threadcxx.cpp: In member function `void
log4cxx::helpers::Thread::run(void*(*)(apr_thread_t*, void*), void*)':
threadcxx.cpp:76: error: invalid conversion from `void*(*)
(apr_thread_t*, void*)' to `void*(*)(apr_thread_t*, void*)'
threadcxx.cpp:76: error: initializing argument 3 of `apr_status_t
apr_thread_create(apr_thread_t**, apr_threadattr_t*, void*(*)
(apr_thread_t*, void*), void*, apr_pool_t*)'

make[3]: *** [threadcxx.lo] Error 1

make[3]: Leaving directory `/d/soft/apache-log4cxx-0.10.0/src/main/ cpp'

make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/d/soft/apache-log4cxx-0.10.0/src/main'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/d/soft/apache-log4cxx-0.10.0/src'
make: *** [install-recursive] Error 1

I quoute from this thread the way to solve it:

http://www.mail-archive.com/log4cxx-user@logging.apache.org/msg02691.html


The above is the reason why its happening, quick and dirty work around is
to remove the following set of lines from thread.h, that will get you going:

#if !defined(LOG4CXX_THREAD_FUNC)
#if defined(_WIN32)
#define LOG4CXX_THREAD_FUNC __stdcall
#else
#define LOG4CXX_THREAD_FUNC
#endif
#endif


and add this instead:

#if !defined(LOG4CXX_THREAD_FUNC)
#define LOG4CXX_THREAD_FUNC
#endif


That should make log4cxx to built in the right way.

Good luck