LIBS 环境变量的语法是什么?

What's the syntax for LIBS environment variable?

mpicxx 有一个 LIBS 环境变量。但是手册页只说

Libraries added when invoking the linker

我想知道这个变量的详细语法,例如,我们应该在目录前加上前缀-L,我们应该只写目录名还是lib文件名,我们是否应该用[=19分隔多个库=] 或逗号或其他东西,等等?我尝试 google 语法,但找不到有关它的信息。所以我在这里问。感谢您的帮助。

I wish to know detailed syntax for this variable

MPI 编译器包装器识别的 LIBS 变量并不特定于那些程序,并且它没有自己的语法。该变量只是扩展(未加引号)以构成 link 命令行的一部分,位于参数中适合指定要包含在 link 中的库的位置。通用语法是shell命令语法的子集,内容的具体意义由linker.

决定

请注意,就其重要性而言,“linker”可能不是直接 ld,而是(对于 mpicxx)一个 C++ 编译器前端比如g++。您以与 link 使用非 MPI C++ 编译器编译程序时相同的形式指定库和库搜索路径条目。

should we prefix -L before directory

如果您想将目录添加到库搜索路径,可以,您可以使用 -L 选项。

should we just write [...] the lib filename

最常规的是使用 -l 选项,因此对于 link libfoo.so,您将使用 -lfoo。或者,您还应该能够指定库文件的相对或绝对路径(没有 -l),在这种情况下,搜索路径是无关紧要的。通过特定路径指定库通常仅用于作为同一项目的一部分构建的库。

should we separate multiple libraries by space or comma or something else

您正在指定扩展为 shell 命令一部分的选项和参数。多个参数必须用空格分隔。

etc.

如前所述,所有细节均来自变量的使用方式。一些可用功能(但通常不是上面描述的任何内容)可能因系统而异,具体取决于底层 linker.

识别的选项。