A friend who has the same problem can see it.
https://groups.google.com/forum/#!searchin/capnproto/libcapnpc.a|sort:date/capnproto/_BFLFOFxLyI/tVAG-KuqUg4J

在 2019年10月13日星期日 UTC+8上午11:18:18,张小写道:
>
> 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 张小 <[email protected]> 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 [email protected].
>>> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/98e86e41-7fb7-4c20-bacb-b9657da6ef24%40googlegroups.com.

Reply via email to