Hello Felipe,
Thank you for your clarification. It works now and I am able to compile *modified test.c* !
Have a nice holiday season.
Regards,
Kimi.
> On 18 Dec 2017, at 13:14, Felipe Costa <FC...@tr...> wrote:
>
> Hi Jussmen,
>
> The compilation of the examples is part of the build process. You can control the examples compilation by the configuration flags: --enable-examples or --disable-examples. In the configuration summary there is a line that spot if you have it enabled or not, something like:
>
>
> + library examples ....enabled
>
>
> If you have that, the examples will be compiled altogether with libModSecurity. There should be a binary named `test' in the example folder.
>
> If you want to modify the example for testing, you just have to enter "make" in the example folder. It should compile the new code.
>
> if you really want to compile the example, separated from the library compilation, you may need to have something like:
>
> $ gcc test.c -o test-out -L../../src/.libs/ -Wl,-rpath=../../src/.libs/ -lmodsecurity -I ../../headers
>
> The directory: ../../src/.libs/ is the place were you can find libModSecurity compiled. While ../../headers is the directory of the headers file. The _rpath_ option suppress the need of the utilization of LD_LIBRARY_PATH.
>
> If you have the library installed in your system, you can also use:
>
> $ gcc test.c -o test-out -L/usr/local/modsecurity/lib -Wl,-rpath=/usr/local/modsecurity/lib -lmodsecurity -I /usr/local/modsecurity/include
>
> I hope you enjoy to work with the library ;)
>
>
> Br.,
> Felipe “Zimmerle” Costa
> Security Researcher, Lead Developer ModSecurity.
>
> Trustwave | SMART SECURITY ON DEMAND
> www.trustwave.com
>
>
>
> From: jussmen <ju...@ya...>
> Sent: Monday, December 18, 2017 8:55 AM
> To: mod...@li...
> Subject: [Mod-security-developers] [modsecurity version 3] "undefined reference to" error when compiling test.c
>
>
>
> Hello,
>
>
> I am trying to run the test.c connector to see what Modsecurity version 3 is, and having following error while compiling test.c.
> https://github.com/SpiderLabs/ModSecurity/blob/v3/master/examples/simple_example_using_c/test.c
>
>
> I used Ubuntsu 17.10 also CentOS 7 Minimal and basically got the same problem.
>
>
> And followed the recipe (note: I added pkg-config).
> https://github.com/SpiderLabs/ModSecurity/wiki/Compilation-recipes
>
>
> $ sudo apt-get install g++ flex bison curl doxygen libyajl-dev libgeoip-dev libtool dh-autoreconf libcurl4-gnutls-dev libxml2 libpcre++-dev libxml2-dev pkg-config
> $ cd /opt/
> $ git clone https://github.com/SpiderLabs/ModSecurity
> $ cd ModSecurity/
> $ git checkout -b v3/master origin/v3/master
> $ sh build.sh
> $ git submodule init
> $ git submodule update #[for bindings/python, others/libinjection, test/test-cases/secrules-language-tests]
> $ ./configure
> $ make
> $ make install
>
>
> Here is some more details from my Ubuntsu.
>
>
> When I compile test.c, I get following errors.
>
>
>
> root@ubuntu:/opt/ModSecurity/examples/simple_example_using_c# gcc -W test.c -o foo.o -L/usr/local/modsecurity/lib -I/opt/ModSecurity/headers/modsecurity/
> /tmp/ccCMawz3.o: In function `main':
> test.c:(.text+0x34): undefined reference to `msc_init'
> test.c:(.text+0x4b): undefined reference to `msc_set_connector_info'
> test.c:(.text+0x55): undefined reference to `msc_create_rules_set'
> test.c:(.text+0x70): undefined reference to `msc_rules_add_file'
> test.c:(.text+0xc9): undefined reference to `msc_rules_dump'
> test.c:(.text+0xea): undefined reference to `msc_rules_add_remote'
> test.c:(.text+0x143): undefined reference to `msc_rules_dump'
> test.c:(.text+0x15b): undefined reference to `msc_new_transaction'
> test.c:(.text+0x184): undefined reference to `msc_process_connection'
> test.c:(.text+0x1a5): undefined reference to `msc_process_uri'
> test.c:(.text+0x1b1): undefined reference to `msc_process_request_headers'
> test.c:(.text+0x1bd): undefined reference to `msc_process_request_body'
> test.c:(.text+0x1d5): undefined reference to `msc_process_response_headers'
> test.c:(.text+0x1e1): undefined reference to `msc_process_response_body'
> test.c:(.text+0x1ed): undefined reference to `msc_process_logging'
> test.c:(.text+0x1f9): undefined reference to `msc_rules_cleanup'
> test.c:(.text+0x205): undefined reference to `msc_cleanup'
> collect2: error: ld returned 1 exit status
>
>
>
>
> I verified library is installed, header files are in the specified path.
>
>
>
> root@ubuntu:/opt/ModSecurity/examples/simple_example_using_c# ls -al /usr/local/modsecurity/lib
> total 174360
> drwxr-xr-x 2 root root 4096 Dec 16 09:58 .
> drwxr-xr-x 5 root root 4096 Dec 11 16:42 ..
> -rw-r--r-- 1 root root 141791210 Dec 16 09:58 libmodsecurity.a
> -rwxr-xr-x 1 root root 1094 Dec 16 09:58 libmodsecurity.la
> lrwxrwxrwx 1 root root 23 Dec 16 09:58 libmodsecurity.so -> libmodsecurity.so.3.0.0
> lrwxrwxrwx 1 root root 23 Dec 16 09:58 libmodsecurity.so.3 -> libmodsecurity.so.3.0.0
> -rwxr-xr-x 1 root root 36736752 Dec 16 09:58 libmodsecurity.so.3.0.0
> root@ubuntu:/opt/ModSecurity/examples/simple_example_using_c#
> root@ubuntu:/opt/ModSecurity/examples/simple_example_using_c# ls -al /opt/ModSecurity/headers/modsecurity/
> total 112
> drwxr-xr-x 4 root root 4096 Dec 18 01:55 .
> drwxr-xr-x 3 root root 4096 Dec 16 10:00 ..
> drwxr-xr-x 2 root root 4096 Dec 11 16:28 actions
> -rw-r--r-- 1 root root 2622 Dec 11 16:28 anchored_set_variable.h
> -rw-r--r-- 1 root root 1802 Dec 11 16:28 anchored_variable.h
> -rw-r--r-- 1 root root 5732 Dec 11 16:28 audit_log.h
> drwxr-xr-x 2 root root 4096 Dec 11 16:28 collection
> -rw-r--r-- 1 root root 1403 Dec 11 16:28 debug_log.h
> -rw-r--r-- 1 root root 1649 Dec 11 16:28 intervention.h
> -rw-r--r-- 1 root root 8403 Dec 11 16:28 modsecurity.h
> -rw-r--r-- 1 root root 3571 Dec 11 16:28 rule.h
> -rw-r--r-- 1 root root 3203 Dec 11 16:28 rule_message.h
> -rw-r--r-- 1 root root 2493 Dec 11 16:28 rules_exceptions.h
> -rw-r--r-- 1 root root 2555 Dec 11 16:28 rules.h
> -rw-r--r-- 1 root root 14789 Dec 11 16:28 rules_properties.h
> -rw-r--r-- 1 root root 20688 Dec 11 16:28 transaction.h
> -rw-r--r-- 1 root root 1220 Dec 11 16:28 variable_origin.h
>
>
>
>
> Then, I tried the installation process again and reviewed the outputs.
>
>
> Full output is on Gist
> https://gist.github.com/jussmen/33cc70b76f21dc4d7a01743a02b15202
>
>
> I noticed that it says I should add LIBDIR into LD_LIBRARY_PATH and LD_RUN_PATH.
> So I checked what path is specified in LIBDIR after the installation process, and found it is empty on my Ubuntsu.
>
>
>
> root@ubuntu:/opt/ModSecurity# echo $LIBDIR
>
>
> root@ubuntu:/opt/ModSecurity#
>
>
>
>
>
> ----------------------------------------------------------------------
> Libraries have been installed in:
> /usr/local/modsecurity/lib
>
>
> If you ever happen to want to link against installed libraries
> in a given directory, LIBDIR, you must either use libtool, and
> specify the full pathname of the library, or use the '-LLIBDIR'
> flag during linking and do at least one of the following:
> - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
> during execution
> - add LIBDIR to the 'LD_RUN_PATH' environment variable
> during linking
> - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
> - have your system administrator add LIBDIR to '/etc/ld.so.conf'
>
>
> See any operating system documentation about shared libraries for
> more information, such as the ld(1) and ld.so(8) manual pages.
> ----------------------------------------------------------------------
>
>
>
>
> I guess I should have something with LIBDIR and that is why compelling test.c returns 'undefined reference to’ errors ?
>
>
> I appreciate any guidance.
>
>
> Regards,
> Kimi.
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> mod-security-developers mailing list
> mod...@li...
> https://lists.sourceforge.net/lists/listinfo/mod-security-developers
> ModSecurity Services from Trustwave's SpiderLabs:
> https://www.trustwave.com/spiderLabs.php
|