我一直在尝试将 mongod 链接到存档文件,而不是使用共享库。目前,我将 mongod 链接到共享库(.so文件)没有问题,一切正常。但是,外部构建的静态库和归档文件有些不同。
这是我基本上要做的事情。我有两个.a文件,比如 lib1.a 和 lib2.a ,我使用make来生成这些文件。我想要做的是通过修改 SCons 构建脚本(位于mongo / src / db中的脚本)静态地将这两个存档文件链接到 mongod 。我期待看到的是这样的:
g ++ -o build / linux2 / normal / mongo / mongod ........ somapath / lib1.a somepath / lib2.a ..... -lpthread -lrt
由于我对SCons不熟悉,到目前为止我改变它一直是个麻烦。任何人都知道我该怎么办?
答案 0 :(得分:0)
通常不会以这种方式为g ++指定库及其路径。通常,g ++命令行应该是这样的:
g++ -o build/linux2/normal/mongo/mongod ........ -Lsomapath1 -Lsomepath2 -llib1.a -llib2.a -lpthread -lrt
这可以在带有SConscript构建脚本的SCons中实现,如下所示:
env = Environment()
env.Append(LIBPATH=['somepath1', 'somepath2'])
env.Append(LIBS=['1', '2', 'pthread', 'rt'])
env.Program(target='build/linux2/normal/mongo/mongod', source='yourSourceFiles')
请注意,对于libs和lib路径,您不需要指定'-L'和'-l'。此外,您不需要指定库前缀或后缀,因此lib名称为“1”和“2”。