我试图在linux上编译一个简单的应用程序,并将其链接到协议缓冲区库中。在编译过程中,我得到了以下错误:
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:176,
from /usr/include/stdlib.h:394,
from /usr/include/c++/9/cstdlib:75,
from /home/bdn/Programming/boost-1.79.0-amd64/include/boost/config/platform/linux.hpp:15,
from /home/bdn/Programming/boost-1.79.0-amd64/include/boost/config.hpp:57,
from /home/bdn/Programming/boost-1.79.0-amd64/include/boost/program_options/config.hpp:10,
from /home/bdn/Programming/boost-1.79.0-amd64/include/boost/program_options/options_description.hpp:11,
from /home/bdn/Programming/boost-1.79.0-amd64/include/boost/program_options.hpp:15,
from /home/bdn/Programming/Beaglebone/source/software/appconfig.hpp:15,
from /home/bdn/Programming/Beaglebone/source/software/appconfig.cpp:12:
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:98:17: error: conflicting declaration of C function ‘uint32_t google::protobuf::internal::little_endian::FromHost(uint32_t)’
98 | inline uint32_t FromHost(uint32_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:90:17: note: previous declaration ‘uint16_t google::protobuf::internal::little_endian::FromHost(uint16_t)’
90 | inline uint16_t FromHost(uint16_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:106:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::little_endian::FromHost(uint64_t)’
106 | inline uint64_t FromHost(uint64_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:98:17: note: previous declaration ‘uint32_t google::protobuf::internal::little_endian::FromHost(uint32_t)’
98 | inline uint32_t FromHost(uint32_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:106:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::little_endian::FromHost(uint64_t)’
106 | inline uint64_t FromHost(uint64_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:90:17: note: previous declaration ‘uint16_t google::protobuf::internal::little_endian::FromHost(uint16_t)’
90 | inline uint16_t FromHost(uint16_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:122:17: error: conflicting declaration of C function ‘uint32_t google::protobuf::internal::little_endian::ToHost(uint32_t)’
122 | inline uint32_t ToHost(uint32_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:114:17: note: previous declaration ‘uint16_t google::protobuf::internal::little_endian::ToHost(uint16_t)’
114 | inline uint16_t ToHost(uint16_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:130:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::little_endian::ToHost(uint64_t)’
130 | inline uint64_t ToHost(uint64_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:122:17: note: previous declaration ‘uint32_t google::protobuf::internal::little_endian::ToHost(uint32_t)’
122 | inline uint32_t ToHost(uint32_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:130:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::little_endian::ToHost(uint64_t)’
130 | inline uint64_t ToHost(uint64_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:114:17: note: previous declaration ‘uint16_t google::protobuf::internal::little_endian::ToHost(uint16_t)’
114 | inline uint16_t ToHost(uint16_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:150:17: error: conflicting declaration of C function ‘uint32_t google::protobuf::internal::big_endian::FromHost(uint32_t)’
150 | inline uint32_t FromHost(uint32_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:142:17: note: previous declaration ‘uint16_t google::protobuf::internal::big_endian::FromHost(uint16_t)’
142 | inline uint16_t FromHost(uint16_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:158:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::big_endian::FromHost(uint64_t)’
158 | inline uint64_t FromHost(uint64_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:150:17: note: previous declaration ‘uint32_t google::protobuf::internal::big_endian::FromHost(uint32_t)’
150 | inline uint32_t FromHost(uint32_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:158:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::big_endian::FromHost(uint64_t)’
158 | inline uint64_t FromHost(uint64_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:142:17: note: previous declaration ‘uint16_t google::protobuf::internal::big_endian::FromHost(uint16_t)’
142 | inline uint16_t FromHost(uint16_t value) {
| ^~~~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:174:17: error: conflicting declaration of C function ‘uint32_t google::protobuf::internal::big_endian::ToHost(uint32_t)’
174 | inline uint32_t ToHost(uint32_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:166:17: note: previous declaration ‘uint16_t google::protobuf::internal::big_endian::ToHost(uint16_t)’
166 | inline uint16_t ToHost(uint16_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:182:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::big_endian::ToHost(uint64_t)’
182 | inline uint64_t ToHost(uint64_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:174:17: note: previous declaration ‘uint32_t google::protobuf::internal::big_endian::ToHost(uint32_t)’
174 | inline uint32_t ToHost(uint32_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:182:17: error: conflicting declaration of C function ‘uint64_t google::protobuf::internal::big_endian::ToHost(uint64_t)’
182 | inline uint64_t ToHost(uint64_t value) {
| ^~~~~~
/home/bdn/Programming/protobuf_amd64/include/google/protobuf/endian.h:166:17: note: previous declaration ‘uint16_t google::protobuf::internal::big_endian::ToHost(uint16_t)’
166 | inline uint16_t ToHost(uint16_t value) {
| ^~~~~~
make[2]: *** [source/software/CMakeFiles/xmbedSw.dir/build.make:76: source/software/CMakeFiles/xmbedSw.dir/appconfig.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:283: source/software/CMakeFiles/xmbedSw.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
函数似乎位于endian.h .h文件中的两个单独的名称空间中。这个文件是PB头的一部分。有什么地方我需要设置一个旗帜才能通过这一切吗?我需要重建利溴布夫吗?我在9.4.0的GNU C和CXX编译器上使用了原型3.21.2版本。
发布于 2022-07-16 01:16:42
结果发现,一个简单的CMakeLists文件变量拼写错误是“源”和“源”的根本原因。这里的错误原因造成了导致上述错误的级联错误,从它的外观来看。
https://stackoverflow.com/questions/72998094
复制相似问题