linux下使用vscode编译及引用动态链接库

1.动态链接库的生成

/****tasks.json*********/
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ 生成活动文件",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/lib/libcommon.so",
                "-std=c++11",
                "-fPIC",
                "-shared"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

在tasks.json中,动态链接库名称必须加lib,如libcommon.so,参数加-fPIC(可选),-shared(必选)。编译即可生成libcommon.so。

2.动态链接库的引用

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ 生成活动文件",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",               
                "${file}",
                "SocketHelper.cpp",
                "-o",               
                "${fileDirname}/${fileBasenameNoExtension}",
                "-I","${fileDirname}/CommonFunc",
                "-L","${fileDirname}/CommonFunc/lib",
                "-l","common",
                "-Wl,-rpath=${fileDirname}/CommonFunc/lib",
                "-std=c++11",
                "-pthread"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

"-I":动态链接库的头文件所在目录;(大写i)

"-L":动态链接库文件所在目录;

"-l":动态链接库名(小写l);

"rpath":程序运行时,优先到rpath指定的目录去寻找依赖库; 程序链接时,在指定的目录中,隐式的链接那些动态库所需要的链接库。

特别注意"-Wl,rpath=xx",在运行调试时程序不会找"-L"参数目录下的链接库,会报错error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory。

要在VS Code中生成动态链接库,需要进行以下步骤: 1. 创建一个C++项目,并在项目中添加需要打包成动态链接库的源码文件。 2. 在项目文件夹中创建一个CMakeLists.txt文件,用于定义项目的构建规则。 3. 在CMakeLists.txt文件中,使用add_library命令定义库的名称、类型和源码文件。 例如,以下代码将创建一个名为mylib的动态链接库: ``` add_library(mylib SHARED mylib.cpp) ``` 4. 运行CMake来生成项目的构建文件。 在VS Code中,可以使用CMake Tools插件来运行CMake。在项目文件夹中打开终端,并输入以下命令: ``` cmake -B build ``` 这将在build文件夹中生成项目的构建文件。 5. 使用构建工具编译库。 在VS Code中,可以使用CMake Tools插件来编译项目。在项目文件夹中打开终端,并输入以下命令: ``` cmake --build build ``` 这将使用默认构建工具编译项目,并在build文件夹中生成动态链接库文件。 6. 在应用程序中使用动态链接库。 要在应用程序中使用动态链接库,需要将库文件添加到应用程序的构建文件中,并在应用程序中包含库的头文件。 例如,在C++程序中,可以使用以下命令来链接动态链接库: ``` g++ -o myapp myapp.cpp -L/path/to/library -lmylib ``` 这将使用myapp.cpp文件和mylib库文件来生成可执行文件myapp。 以上是在VS Code中生成动态链接库的基本步骤。具体的步骤可能会因项目设置、构建工具和操作系统而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值