[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cmake
Subject:    Re: [CMake] Compile shared library and call it's functions
From:       Andreas Pakulat <apaku () gmx ! de>
Date:       2016-03-08 6:47:07
Message-ID: CAExHGmTpmTb=+hu89iaaetkoPGvHWbNDzBQHERqx-MxeyiMTLw () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi,

On Mon, Mar 7, 2016 at 9:29 PM, Ivan <ivan@sleepyiora.pw> wrote:

> Hello!
> 
> Here is my CMakeLists.txt:
> 
> cmake_minimum_required(VERSION 3.3)
> project(untitled19)
> 
> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
> 
> set(LIBRARY_SRC library.cpp)
> 
> add_library(libra SHARED ${LIBRARY_SRC})
> 
> set(SOURCE_FILES main.cpp)
> add_executable(untitled19 ${SOURCE_FILES})
> target_link_libraries(untitled19 libra)
> 
> 
> This works and both library and executable are compiled. Unfortunately library \
> seems to be linked into the executable: ‘nm' command shows that the executable \
> itself exports needed functions! 
> 
I do not think your interpreting the nm output correctly, but its hard to
say without seeing it ;)

Note that nm will show the functions exported by the library in the output
for the executable, because the executable uses those functions. It will
also indicate however that these functions are not defined inside the
executable in the corresponding column with an upper-case U. When you run
nm on the library itself you will notice that the same symbols have a
different type in the corresponding column. In addition you can verify that
the executable actually links against the library using the otool
commandline tool: otool -L executable.

Andreas


[Attachment #5 (text/html)]

<div dir="ltr">Hi,<div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar \
7, 2016 at 9:29 PM, Ivan <span dir="ltr">&lt;<a href="mailto:ivan@sleepyiora.pw" \
target="_blank">ivan@sleepyiora.pw</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div \
style="word-wrap:break-word">Hello!<div><br></div><div>Here is my \
CMakeLists.txt:</div><div><br></div><div><pre \
style="font-family:Menlo">cmake_minimum_required(VERSION 3.3) project(untitled19)

set(CMAKE_CXX_FLAGS &quot;${CMAKE_CXX_FLAGS} -std=c++11&quot;)

set(LIBRARY_SRC library.cpp)

add_library(libra SHARED ${LIBRARY_SRC})

set(SOURCE_FILES main.cpp)
add_executable(untitled19 ${SOURCE_FILES})
target_link_libraries(untitled19 libra)</pre><pre \
style="font-family:Menlo"><br></pre><pre style="font-family:Menlo">This works and \
both library and executable are compiled. Unfortunately library seems to be linked \
into the executable: ‘nm' command shows that the executable itself exports needed \
functions!</pre></div></div></blockquote><div><br></div><div>I do not think your \
interpreting the nm output correctly, but its hard to say without seeing it \
;)</div><div><br></div><div>Note that nm will show the functions exported by the \
library in the output for the executable, because the executable uses those \
functions. It will also indicate however that these functions are not defined inside \
the executable in the corresponding column with an upper-case U. When you run nm on \
the library itself you will notice that the same symbols have a different type in the \
corresponding column. In addition you can verify that the executable actually links \
against the library using the otool commandline tool: otool -L \
executable.</div><div><br></div><div>Andreas</div></div></div></div>



-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: \
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information \
on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at \
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic