Tensorflow:与共享库动态链接
Tensorflow: dynamic linking with shared library
我正在做一个使用Tensorflow的共享库。现在,我将它作为子项目放在Tensorflow的源树中,并使用以下BUILD文件:
cc_binary(
name = "recognizer.so",
srcs = glob(["recognizer.cpp"]),
linkshared = 1,
deps = [
"//tensorflow:сore"
],
)
所有的东西都链接在一起,但我最终得到了一个大小约为94兆字节的共享库,而不依赖于libtensorflow_cc.so。实际上,甚至没有构建像libtensorflow_cc.so这样的二进制库。
有一个目标//tensorflow:libtensorflow_cc.so。它被声明为cc_binary,这意味着(根据巴泽尔的说法)我不能依赖它。而且这个目标实际上是非公共的,这意味着您可以构建它,但不能从另一个子项目引用它。至少和巴泽尔在一起。
那么,有什么方法可以做这么简单的事情吗?
我无法评论为什么libtensorflow.so或libtensorflow_cc.so是内部的。但是,在Bazel中可以使用一个技巧来依赖cc_binary创建的共享库:将其声明为cc规则的源。
cc_binary(
name = "liba.so",
srcs = [ "a.cc" ],
linkshared = 1
)
cc_binary(
name = "main",
srcs = [ "main.cc", "liba.so" ],
)
现在这是非常不受支持的:)事实上,在接下来的几个月里,我们将改变处理共享库的方式,所以我几乎可以向你保证它会崩溃。您可以订阅https://github.com/bazelbuild/bazel/issues/1920或者关注bazel dev@进行更新。
相关文章:
- g++用户定义的动态链接库上的全局new和delete运算符
- 如何使用C++导出制作动态链接库
- 使用动态链接加载程序 <dlfcn.h> 而不是直接函数调用的目的是什么?
- 动态链接库中C++回调函数
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 如何动态链接 grpc 库 c++?
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 将函数传递给动态链接库
- aarch64动态链接器rpath使用辅助依赖链接
- 动态链接-Linux与Windows
- 如何将动态链接库与CMake一起使用
- 使用动态链接从.dll库调用函数
- 静态链接 Visual Studio dll 到动态链接的 sfml 项目
- 从另一个动态链接库项目调用静态库函数
- JNI 不满意链接错误: 动态链接库 (DLL) 初始化例程失败
- 使用 GCC 的静态和动态链接
- 静态链接MSVC库,动态链接Qt
- 在动态链接中,.exe如何知道在更新库时在哪里搜索库?
- 如何强制Windows.h在Visual Studio中静态链接而不是动态链接?
- 对应于 stdio.h 的库文件是动态链接还是静态链接