2016-07-30 88 views
0

我能夠使用張量流/ bazel創建.so文件但沒有cuda。如果我嘗試bazel生成-c opts --config = cuda:lib.so我得到一個未定義的引用main(..)。有沒有辦法擺脫指向main(...)的錯誤?Bazel使用張量流和cuda創建.so文件的錯誤

這裏是我的BUILD文件

cc_binary(
    name = "lib.so", 
    srcs = [ 
     "lib.cc", 
     "jni.h", 
     "jni_md.h", 
     "lib.h", 
     "jni_utils.h", "jni_utils.cc" 

    ], 
    copts = tf_copts(), 

    linkopts = ["-shared"], 


    deps = [ 
     "//tensorflow/core:tensorflow", 
     "//tensorflow/core:framework", 
     "//tensorflow/cc:cc_ops", 
     "//tensorflow/core:all_kernels", 
     "@opencv//:opencv" 
    ], 
) 

即時得到這些錯誤:

失敗:crosstool_wrapper_driver_is_not_gcc失敗:錯誤執行命令 (+的.text爲0x20):未定義的引用`主 collect2:錯誤:ld返回1退出狀態

+0

即時得到這些錯誤crosstool_wrapper_driver_is_not_gcc失敗:錯誤執行命令(的.text + 0×20):未定義參考'主 collect2:錯誤:LD返回1個退出狀態 – mrBean

回答

0

原來你只需要設置linkshared = 1到BUILD

cc_binary(
    name = "lib.so", 
    srcs = [ 
     "lib.cc", 
     "jni.h", 
     "jni_md.h", 
     "lib.h", 
     "jni_utils.h", "jni_utils.cc" 

    ], 
    copts = tf_copts(), 

    linkshared = 1, 


    deps = [ 
     "//tensorflow/core:tensorflow", 
     "//tensorflow/core:framework", 
     "//tensorflow/cc:cc_ops", 
     "//tensorflow/core:all_kernels", 
     "@opencv//:opencv" 
    ], 
)