make创建静态库,但无法使用add_Library创建共享库

如何解决make创建静态库,但无法使用add_Library创建共享库

我正在使用单个CMake文件编译几个库并创建一个库。 CMake执行成功并创建了make文件。在addLibrary()中使用STATIC选项执行make文件,成功创建了静态库,但是无法使用SHARED选项创建动态库。

CMakeList.txt

  cmake_minimum_required(VERSION 3.5)

# set the project name
project(snncore VERSION 1.0)
# Find requirements

# specify the C++ standard
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_required True)

option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
# Define CMake variables here
set(LIB_DIR ${PROJECT_SOURCE_DIR}/lib)
set(CFLAGS "-Wall -g -std=c99 -Iinclude")

# Add path of header files
include_directories(${CMAKE_SOURCE_DIR}lib/ChecksumTestFile
               ${CMAKE_SOURCE_DIR}/lib/ConfigDataHandler
               ${CMAKE_SOURCE_DIR}/lib/FileParse
               ${CMAKE_SOURCE_DIR}/lib/FileUtils2
               ${CMAKE_SOURCE_DIR}/lib/StringUtils
               ${CMAKE_SOURCE_DIR}/lib/ZipStream
               ${CMAKE_SOURCE_DIR}/lib/Stack
               ${CMAKE_SOURCE_DIR}/lib/PipeRedirect
               ${CMAKE_SOURCE_DIR}/lib/MRCASException
               ${CMAKE_SOURCE_DIR}/lib/LogClient
               ${CMAKE_SOURCE_DIR}/lib/log-server
               ${CMAKE_SOURCE_DIR}/lib/PortHacks)
add_library(snncore SHARED ${LIB_DIR}/FileUtils2/Directorycopier.cpp
                    ${LIB_DIR}/FileUtils2/Directorycopier.hpp
                    ${LIB_DIR}/FileUtils2/DirectoryInfo.cpp
                    ${LIB_DIR}/FileUtils2/DirectoryInfo.hpp
                    ${LIB_DIR}/FileUtils2/FileUtils2.cpp
                    ${LIB_DIR}/FileUtils2/FileUtils2.hpp
                    ${LIB_DIR}/FileUtils2/ReplaceString.cpp
                    ${LIB_DIR}/FileUtils2/ReplaceString.hpp
             ${LIB_DIR}/StringUtils/StringUtils.c
             ${LIB_DIR}/StringUtils/StringUtils.h
             ${LIB_DIR}/StringUtils/tester.c
             ${LIB_DIR}/StringUtils/threadtest.c
             ${LIB_DIR}/StringUtils/tokentest.c
             ${LIB_DIR}/StringUtils/wraptest.c
              ${LIB_DIR}/MRCASException/MRCASException.C
             ${LIB_DIR}/MRCASException/test.C
             ${LIB_DIR}/FileParse/fileparse.c
             ${LIB_DIR}/FileParse/cfgchk.c
             ${LIB_DIR}/FileParse/parsetest.c
             ${LIB_DIR}/FileParse/parsetest2.c
                    ${LIB_DIR}/FileParse/fileparse.h
                    ${LIB_DIR}/ChecksumTestFile/checksum_test_file.c
                    ${LIB_DIR}/ChecksumTestFile/test.c
                    ${LIB_DIR}/ChecksumTestFile/checksum_test_file.h
                    ${LIB_DIR}/ConfigDataHandler/ConfigDataHandler.C
                    ${LIB_DIR}/ConfigDataHandler/ConfigDataHandler_Data.C
                    ${LIB_DIR}/ConfigDataHandler/ConfigDataHandler_Debug.C
                    ${LIB_DIR}/ConfigDataHandler/ConfigDataHandler_SECTION.C
                    ${LIB_DIR}/ConfigDataHandler/ConfigException.C
                    ${LIB_DIR}/ConfigDataHandler/ConfigParser.C
                    ${LIB_DIR}/ConfigDataHandler/MRCASConfigHandler.C
                    ${LIB_DIR}/ConfigDataHandler/MRCASParser.C
                    ${LIB_DIR}/ConfigDataHandler/MRCASConfigHandler.hh
                    ${LIB_DIR}/ConfigDataHandler/ConfigDataHandler.hh
                    ${LIB_DIR}/LogClient/LogClient.C
             ${LIB_DIR}/LogClient/LogClient.hh
             ${LIB_DIR}/PipeRedirect/PipeRedirect.c
             ${LIB_DIR}/PipeRedirect/tester.c
             ${LIB_DIR}/PipeRedirect/PipeRedirect.h
             ${LIB_DIR}/ZipStream/ZipStream.cpp
             ${LIB_DIR}/ZipStream/ZipStream.hh
             ${LIB_DIR}/log-server/log-server.C
             ${LIB_DIR}/Stack/mrstack.c
             ${LIB_DIR}/Stack/include/mrstack.h
             ${LIB_DIR}/PortHacks/fn_alphasort.c
                 ${LIB_DIR}/PortHacks/fn_basename.c
                 ${LIB_DIR}/PortHacks/fn_dirname.c
                 ${LIB_DIR}/PortHacks/fn_gtod_timer.c
                 ${LIB_DIR}/PortHacks/fn_gtod_tod.c
                 ${LIB_DIR}/PortHacks/fn_localtime_r.c
                 ${LIB_DIR}/PortHacks/fn_mkstemp.c
                 ${LIB_DIR}/PortHacks/fn_realpath.c
                 ${LIB_DIR}/PortHacks/fn_scandir.c
                 ${LIB_DIR}/PortHacks/fn_setenv.c
                 ${LIB_DIR}/PortHacks/tester.c)

尝试通过在add_library()中添加SHARED创建共享库时出现以下链接错误

rios-bandu@ubuntu:~/git_sandBox/riOS/snncore/build$ make
[  2%] Linking CXX shared library libsnncore.so
/usr/bin/ld: CMakeFiles/snncore.dir/lib/StringUtils/threadtest.c.o: in function `main':
threadtest.c:(.text+0x2b5): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/StringUtils/tokentest.c.o: in function `main':
tokentest.c:(.text+0x0): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/StringUtils/wraptest.c.o: in function `main':
wraptest.c:(.text+0x0): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/MRCASException/test.C.o: in function `main':
test.C:(.text+0x2507): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/FileParse/cfgchk.c.o: in function `main':
cfgchk.c:(.text+0x0): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/FileParse/parsetest.c.o: in function `main':
parsetest.c:(.text+0x1ac): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/FileParse/parsetest2.c.o: in function `main':
parsetest2.c:(.text+0x0): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/ChecksumTestFile/test.c.o: in function `main':
test.c:(.text+0x0): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/PipeRedirect/tester.c.o: in function `main':
tester.c:(.text+0x376): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/log-server/log-server.C.o: in function `main':
log-server.C:(.text+0x0): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/snncore.dir/lib/PortHacks/tester.c.o: in function `main':
tester.c:(.text+0x555): multiple deFinition of `main'; CMakeFiles/snncore.dir/lib/StringUtils/tester.c.o:tester.c:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/snncore.dir/build.make:699: libsnncore.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/snncore.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
rios-bandu@ubuntu:~/git_sandBox/riOS/snncore/build$ 
               

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?