hi Kenton:
   Thank you very much. I've settled it.Splitting bazel-dependent libraries 
into three libraries,It works

   best wish
   whutbd 

在 2019年10月12日星期六 UTC+8上午1:00:26,Kenton Varda写道:
>
> Hi,
>
> Sorry, I do not know how to control Bazel's linker command line order. 
> Maybe it would help to define three separate cc_library rules for the three 
> libraries, with the dependencies between them specified -- maybe Bazel will 
> then recognize the dependency relationship and do the ordering correctly. 
> But I don't know.
>
> -Kenton
>
> On Fri, Oct 11, 2019 at 8:48 AM 张小 <7745...@qq.com <javascript:>> wrote:
>
>> bazel link *.a  in   Lexicographic order,how can I change it
>>
>>
>> bazel-out/k8-fastbuild/bin/_objs/test_capn/demo/test_capn_serialize_performance.pic.o
>> bazel-out/k8-fastbuild/bin/_objs/test_capn/demo/full_info.capnp.pic.o
>> capnp/lib/libcapnp.a
>> capnp/lib/libcapnpc.a
>> capnp/lib/libkj.a
>> -lstdc++
>> -lm
>>
>>
>>
>> 在 2019年10月11日星期五 UTC+8下午7:12:26,张小写道:
>>>
>>>
>>> nm -C libcapnpc.a |grep SchemaLoader|grep 'get('
>>>                  U capnp::SchemaLoader::get(unsigned long, 
>>> capnp::schema::Brand::Reader, capnp::Schema) const
>>>
>>> nm -C libcapnp.a |grep SchemaLoader|grep 'get('
>>> 0000000000004250 T capnp::SchemaLoader::get(unsigned long, 
>>> capnp::schema::Brand::Reader, capnp::Schema) const
>>>
>>>
>>> it seems SchemaLoader::get Symbol in libcapnp.a , and in my bazel build 
>>> file  like this 
>>>
>>> cc_library(
>>>     name = 'capnp',
>>>     visibility = ["//visibility:public"],
>>>     hdrs = glob([
>>>         "include/capnp/*.h",
>>>         "include/capnp/compat/*.h",
>>>         "include/kj/*.h",
>>>         "include/kj/**/*.h",
>>>         ]),
>>>     srcs = glob([
>>>         "lib/libcapnpc.a",
>>>         "lib/libcapnp.a",
>>>         "lib/libkj.a",
>>>         ]),
>>>
>>>     strip_include_prefix = "include",
>>> )
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> 在 2019年10月11日星期五 UTC+8下午3:47:39,张小写道:
>>>>
>>>> Hi,Kenton:
>>>>      I like capnp,  I use Capn ,Link with static libraries( use .a) 
>>>> Failed ,Error Like this
>>>>
>>>> ERROR: xxxxx/BUILD:6:1: Linking of rule '//:test_capn' failed (Exit 1)
>>>> capnp/lib/libcapnpc.a(schema-parser.o):schema-parser.c++:function 
>>>> capnp::ParsedSchema::findNested(kj::StringPtr) const: error: undefined 
>>>> reference to 'capnp::SchemaLoader::get(unsigned long, 
>>>> capnp::schema::Brand::Reader, capnp::Schema) const'
>>>>
>>>>
>>>> but the libcapnpc.a has the “SchemaLoader::get” Symbol like this: 
>>>> nm capnp/lib/libcapnpc.a |grep SchemaLoader|grep get
>>>>                  nm -C lib/libcapnpc.a |grep SchemaLoader|grep get
>>>>                  U capnp::SchemaLoader::get(unsigned long, 
>>>> capnp::schema::Brand::Reader, capnp::Schema) const
>>>>                  U 
>>>> capnp::SchemaLoader::getType(capnp::schema::Type::Reader, capnp::Schema) 
>>>> const
>>>>                  U capnp::SchemaLoader::get(unsigned long, 
>>>> capnp::schema::Brand::Reader, capnp::Schema) const
>>>>
>>>>
>>>>  capnp/lib$ ll -rth
>>>> 总用量 8.4M
>>>> -rw-r--r-- 1 mulou mulou 1.1M 9月  27 15:08 libcapnp.a
>>>> -rw-r--r-- 1 mulou mulou 1.4M 9月  27 15:08 libcapnpc.a
>>>> -rw-r--r-- 1 mulou mulou 330K 9月  27 15:08 libcapnp-json.a
>>>> -rw-r--r-- 1 mulou mulou 2.0M 9月  27 15:08 libcapnp-rpc.a
>>>> -rw-r--r-- 1 mulou mulou 941K 9月  27 15:08 libkj.a
>>>> -rw-r--r-- 1 mulou mulou 1.2M 9月  27 15:08 libkj-async.a
>>>> -rw-r--r-- 1 mulou mulou  70K 9月  27 15:08 libkj-test.a
>>>> -rw-r--r-- 1 mulou mulou 1.5M 9月  27 15:08 libkj-http.a
>>>>
>>>> *I try to link it with dynamic libraries,it works *
>>>>
>>>> *nm -C lib-old/libcapnpc.so |grep SchemaLoader|grep get*
>>>> *                 U capnp::SchemaLoader::get(unsigned long, 
>>>> capnp::schema::Brand::Reader, capnp::Schema) const*
>>>> *                 U 
>>>> capnp::SchemaLoader::getType(capnp::schema::Type::Reader, capnp::Schema) 
>>>> const*
>>>>
>>>> *But I want to use static libraries instead of dynamic libraries 
>>>> because dynamic libraries are a little cumbersome to deploy. *
>>>>
>>>> *I  install the capn **libraries**  like this :*
>>>>
>>>> curl -O https://capnproto.org/capnproto-c++-0.7.0.tar.gz tar zxf 
>>>> capnproto-c++-0.7.0.tar.gz cd capnproto-c++-0.7.0 ./configure make -j6 
>>>> check sudo make install
>>>>
>>>> All the best
>>>> whutbd
>>>>
>>>>
>>>>
>>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Cap'n Proto" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to capn...@googlegroups.com <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/capnproto/ae657a42-78cf-4903-8f76-00e186d9a256%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/capnproto/ae657a42-78cf-4903-8f76-00e186d9a256%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/c4ec6b25-bc76-4fbe-bc19-b18e312619dc%40googlegroups.com.

Reply via email to