区块链技术博客
www.b2bchain.cn

apt install 是怎么运行的求职学习资料

本文介绍了apt install 是怎么运行的求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

实际上是最近遇到了一个bug,跟以前写的一篇笔记有相关,就整理一下发出来了。

    • 背景
    • 调查

背景

编译一个golang的项目时,提示:缺少git_index_add_from_buffer的动态库。

# github.com/libgit2/git2go/v30 /tmp/go-build349513601/b205/_x019.o: In function `_cgo_eec00726eb8d_Cfunc_git_index_add_from_buffer': /tmp/go-build/cgo-gcc-prolog:161: undefined reference to `git_index_add_from_buffer' collect2: error: ld returned 1 exit status Makefile:21: recipe for target 'binary' failed make: *** [binary] Error 2

项目时依赖了libgit这个库,搜索git_index_add_from_buffer也可以确认函数是来自libgit

但是我之前因为版本问题,在apt install libgit因为版本不对(最新是0.08)后,看到项目Makefile里有编译安装的方法,就跑了一下,升级到1.0.1

    cd /tmp     rm -fr libgit2-1.0.1.tar.gz libgit2-1.0.1     curl -Lv -O https://github.com/libgit2/libgit2/releases/download/v1.0.1/libgit2-1.0.1.tar.gz     tar xvfz libgit2-1.0.1.tar.gz     mkdir -p libgit2-1.0.1/build     cd libgit2-1.0.1/build     cmake ..     cmake --build .     sudo cp libgit2.pc /usr/lib/pkgconfig/     sudo cp libgit2.so.1.0.1 /usr/lib     sudo ln -s /usr/lib/libgit2.so.1.0.1 /usr/lib/libgit2.so     sudo cp -aR ../include/* /usr/local/include/

解决了问题的了,但为何在链接时还提示缺少git_index_add_from_buffer的引用呢。

调查

root@localhost:/#  readelf -s /usr/lib/libgit2.so.1.0  2>&1 | grep git_index_add_from_buffer    782: 000000000006d9c0   426 FUNC    GLOBAL DEFAULT   12 git_index_add_from_buffer   2680: 000000000006d9c0   426 FUNC    GLOBAL DEFAULT   12 git_index_add_from_buffer

可以看到,动态链接库里确实有这两个符号

root@localhost:/# cat /usr/lib/pkgconfig/libgit2.pc prefix="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install" libdir="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install/lib" includedir="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install/include"  Name: libgit2 Description: The git library, take 2 Version: 1.0.0 Libs: -L${libdir} -lgit2 Libs.private: -lrt -lpthread -lssh2 Requires.private: openssl zlib Cflags: -I${includedir}

实际上是最近遇到了一个bug,跟以前写的一篇笔记有相关,就整理一下发出来了。

    • 背景
    • 调查

背景

编译一个golang的项目时,提示:缺少git_index_add_from_buffer的动态库。

# github.com/libgit2/git2go/v30 /tmp/go-build349513601/b205/_x019.o: In function `_cgo_eec00726eb8d_Cfunc_git_index_add_from_buffer': /tmp/go-build/cgo-gcc-prolog:161: undefined reference to `git_index_add_from_buffer' collect2: error: ld returned 1 exit status Makefile:21: recipe for target 'binary' failed make: *** [binary] Error 2

项目时依赖了libgit这个库,搜索git_index_add_from_buffer也可以确认函数是来自libgit

但是我之前因为版本问题,在apt install libgit因为版本不对(最新是0.08)后,看到项目Makefile里有编译安装的方法,就跑了一下,升级到1.0.1

    cd /tmp     rm -fr libgit2-1.0.1.tar.gz libgit2-1.0.1     curl -Lv -O https://github.com/libgit2/libgit2/releases/download/v1.0.1/libgit2-1.0.1.tar.gz     tar xvfz libgit2-1.0.1.tar.gz     mkdir -p libgit2-1.0.1/build     cd libgit2-1.0.1/build     cmake ..     cmake --build .     sudo cp libgit2.pc /usr/lib/pkgconfig/     sudo cp libgit2.so.1.0.1 /usr/lib     sudo ln -s /usr/lib/libgit2.so.1.0.1 /usr/lib/libgit2.so     sudo cp -aR ../include/* /usr/local/include/

解决了问题的了,但为何在链接时还提示缺少git_index_add_from_buffer的引用呢。

调查

root@localhost:/#  readelf -s /usr/lib/libgit2.so.1.0  2>&1 | grep git_index_add_from_buffer    782: 000000000006d9c0   426 FUNC    GLOBAL DEFAULT   12 git_index_add_from_buffer   2680: 000000000006d9c0   426 FUNC    GLOBAL DEFAULT   12 git_index_add_from_buffer

可以看到,动态链接库里确实有这两个符号

root@localhost:/# cat /usr/lib/pkgconfig/libgit2.pc prefix="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install" libdir="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install/lib" includedir="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install/include"  Name: libgit2 Description: The git library, take 2 Version: 1.0.0 Libs: -L${libdir} -lgit2 Libs.private: -lrt -lpthread -lssh2 Requires.private: openssl zlib Cflags: -I${includedir}

实际上是最近遇到了一个bug,跟以前写的一篇笔记有相关,就整理一下发出来了。

    • 背景
    • 调查

背景

编译一个golang的项目时,提示:缺少git_index_add_from_buffer的动态库。

# github.com/libgit2/git2go/v30 /tmp/go-build349513601/b205/_x019.o: In function `_cgo_eec00726eb8d_Cfunc_git_index_add_from_buffer': /tmp/go-build/cgo-gcc-prolog:161: undefined reference to `git_index_add_from_buffer' collect2: error: ld returned 1 exit status Makefile:21: recipe for target 'binary' failed make: *** [binary] Error 2

项目时依赖了libgit这个库,搜索git_index_add_from_buffer也可以确认函数是来自libgit

但是我之前因为版本问题,在apt install libgit因为版本不对(最新是0.08)后,看到项目Makefile里有编译安装的方法,就跑了一下,升级到1.0.1

    cd /tmp     rm -fr libgit2-1.0.1.tar.gz libgit2-1.0.1     curl -Lv -O https://github.com/libgit2/libgit2/releases/download/v1.0.1/libgit2-1.0.1.tar.gz     tar xvfz libgit2-1.0.1.tar.gz     mkdir -p libgit2-1.0.1/build     cd libgit2-1.0.1/build     cmake ..     cmake --build .     sudo cp libgit2.pc /usr/lib/pkgconfig/     sudo cp libgit2.so.1.0.1 /usr/lib     sudo ln -s /usr/lib/libgit2.so.1.0.1 /usr/lib/libgit2.so     sudo cp -aR ../include/* /usr/local/include/

解决了问题的了,但为何在链接时还提示缺少git_index_add_from_buffer的引用呢。

调查

root@localhost:/#  readelf -s /usr/lib/libgit2.so.1.0  2>&1 | grep git_index_add_from_buffer    782: 000000000006d9c0   426 FUNC    GLOBAL DEFAULT   12 git_index_add_from_buffer   2680: 000000000006d9c0   426 FUNC    GLOBAL DEFAULT   12 git_index_add_from_buffer

可以看到,动态链接库里确实有这两个符号

root@localhost:/# cat /usr/lib/pkgconfig/libgit2.pc prefix="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install" libdir="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install/lib" includedir="/home/cloud/go_dir/src/github.com/git2go/dynamic-build/install/include"  Name: libgit2 Description: The git library, take 2 Version: 1.0.0 Libs: -L${libdir} -lgit2 Libs.private: -lrt -lpthread -lssh2 Requires.private: openssl zlib Cflags: -I${includedir}

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » apt install 是怎么运行的求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们