Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将命令库中的C++库链接起来 我正在制作一个C++库,它有多个头,所有的头都有一个.h,.cp,.o文件,如何使这个库链接起来,这样用户就可以编译它:g++Me.CPP-O二进制文件-L LableAlnNeMy/_C++_Command Line_Compilation_Linker - Fatal编程技术网

如何将命令库中的C++库链接起来 我正在制作一个C++库,它有多个头,所有的头都有一个.h,.cp,.o文件,如何使这个库链接起来,这样用户就可以编译它:g++Me.CPP-O二进制文件-L LableAlnNeMy/

如何将命令库中的C++库链接起来 我正在制作一个C++库,它有多个头,所有的头都有一个.h,.cp,.o文件,如何使这个库链接起来,这样用户就可以编译它:g++Me.CPP-O二进制文件-L LableAlnNeMy/,c++,command-line,compilation,linker,C++,Command Line,Compilation,Linker,如何使库可链接 像这样: ar ruv libraryName.a foo.o bar.o baz.o 这最好通过编写一个Makefile来实现,它将为您自动化构建过程。大概是这样的: all: libraryName.a clean: rm -f *.o # important: use TAB, not spaces for indentation here. SRCS = foo.cpp bar.cpp baz.cpp OBJS = ${SRCS:.cpp=.o}

如何使库可链接

像这样:

ar ruv libraryName.a foo.o bar.o baz.o
这最好通过编写一个Makefile来实现,它将为您自动化构建过程。大概是这样的:

all: libraryName.a
clean:
        rm -f *.o  # important: use TAB, not spaces for indentation here.

SRCS = foo.cpp bar.cpp baz.cpp
OBJS = ${SRCS:.cpp=.o}

libraryName.a: ${OBJS}
注意:要使用libraryName.a,请执行以下操作:

g++ -o exename main.cpp -lbraryName
但这并不需要名为liblibraryName的库:


我发现最好的方法是花几个月的时间学习GNU工具链:如何使用autoconf、automake和libtool。libtool将负责此功能,但为了有效地使用它,您还需要autoconf和automake。您始终可以使用适当的选项运行ld,并自己构建共享库,但libtool会处理许多其他细节,这些细节会让您陷入困境,直到您正确完成为止。学习如何使用libtool。祝你好运。谢谢@EmployeedRussian。ruv中的“u”是什么意思?因为当我尝试时,它说:'u'修饰符被忽略,因为'D'是默认值,请参见'u'
g++ -o exename main.cpp -l libraryName