Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
不要用Bazel损坏共享库的名称 给出一个用Bazel构建的C++应用程序,它依赖于外部的、系统提供的共享库: cc_binary( name = 'app', srcs = ['app.cpp'], linkstatic = False, deps = ['@my_system//:system_lib'], )_C++_Build_Shared Libraries_Bazel - Fatal编程技术网

不要用Bazel损坏共享库的名称 给出一个用Bazel构建的C++应用程序,它依赖于外部的、系统提供的共享库: cc_binary( name = 'app', srcs = ['app.cpp'], linkstatic = False, deps = ['@my_system//:system_lib'], )

不要用Bazel损坏共享库的名称 给出一个用Bazel构建的C++应用程序,它依赖于外部的、系统提供的共享库: cc_binary( name = 'app', srcs = ['app.cpp'], linkstatic = False, deps = ['@my_system//:system_lib'], ),c++,build,shared-libraries,bazel,C++,Build,Shared Libraries,Bazel,工作区和BUILD.my_系统文件: new_local_repository( name = 'my_system', build_file = 'BUILD.my_system', path = '/usr/lib/my_system/', ) 这将生成,但首先将系统提供的库复制到缓存,并链接到该缓存: $ ldd bazel-bin/app/app system_lib.so => /home/erenon/bazel/proj/bazel-bin/app/..

工作区和BUILD.my_系统文件:

new_local_repository(
  name = 'my_system',
  build_file = 'BUILD.my_system',
  path = '/usr/lib/my_system/',
)
这将生成,但首先将系统提供的库复制到缓存,并链接到该缓存:

$ ldd bazel-bin/app/app
    system_lib.so => /home/erenon/bazel/proj/bazel-bin/app/../_solib_k8/_U@my_system_S_S_Csystem_Ulib___Uexternal_Smy_system/system_lib.so
    [...]
如果我将
app
移动到具有
/usr/lib/my_system/system_lib.so
的同一系统,它会断开,因为它丢失了缓存。我希望将
应用程序
打包,使其直接链接到原始
。因此
,而不需要中间缓存副本或名称损坏,即:我希望实现:

$ ldd bazel-bin/app/app
    system_lib.so => /usr/lib/my_system/system_lib.so
    [...]

我尝试了
cc\u导入。系统提供了
,但这似乎只适用于Windows
lib/dll
s。

用另一个cc\u库包装您的库。
我无法解释它为什么有效,但它确实有效

cc_library(
    name = "libsystem_lib",
    srcs = [ ":system_lib" ],
    hdrs = ...
)
而要依靠这个

cc_library(
    name = "libsystem_lib",
    srcs = [ ":system_lib" ],
    hdrs = ...
)