链接CXX可执行文件
Linking CXX executable
我尝试构建proect。当我做的时候/build.sh-arch x64我得到一个链接错误:
Linking CXX shared library /home/buzanova/gmat/application/bin/libGmatBase.so
[72%] Built target GmatBase
Linking CXX executable /home/buzanova/gmat/application/bin/gmatConsole
/home/buzanova/gmat/application/bin/libGmatBase.so.R2013a: undefined reference to DelaL::DelaL(std::string const&, GmatBase*)
etc.....
我的CMakeFile.txt包含
if (UNIX)
MESSAGE("-- Using a shared base library")
IF(APPLE) # mac
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -dylib -dynamiclib -two_levelnamespace -undefined dynamic_lookup")
# snow leopard
#SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -arch i386")
endif()
endif (UNIX)
INCLUDE_DIRECTORIES("./include")
INCLUDE_DIRECTORIES("./foundation")
INCLUDE_DIRECTORIES("./hardware")
etc......
SET(BASE_SRCS
asset/AssetException.cpp
asset/BodyFixedPoint.cpp
asset/GroundstationInterface.cpp
etc...
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../application/bin")
ADD_LIBRARY(${TargetName} SHARED ${BASE_SRCS})
我该怎么修?
对于静态库,您需要添加一些链接器标志:
-L<lib_path> -l:<lib_name>
下面是一个示例(假设dir myLib与makefile在同一目录中):
STATIC_LIBS = -L$(CURDIR)/myLib -l:myLib.a
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJ)
$(CC) $(LDFLAGS) $(OBJ) $(STATIC_LIBS) -o $@
.c.o:
$(CC) $(CFLAGS) -o $@ $<
clean:
$(RM) $(EXECUTABLE) $(OBJ) make.out
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 程序在使用 system() 启动另一个可执行文件时停止
- 如何更改使用 CPack 安装的可执行文件的名称?
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 如何将图像传入C++可执行文件并将输出图像存储在新目录中?
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 如何在 linux 可执行文件中使用静态库
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 编译的C可执行文件被Windows defender检测为病毒
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 是否可以在命令行中将输入参数传递给可执行文件
- 如何在可执行文件中存储常量数组?
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- 可执行文件C++包括.obj,.lib和.dll吗?
- 链接 CXX 可执行文件 - /usr/bin/ld:找不到
- 链接CXX可执行文件