Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linux: link error with -lroachproto #35

Closed
andybons opened this issue Aug 21, 2014 · 6 comments
Closed

linux: link error with -lroachproto #35

andybons opened this issue Aug 21, 2014 · 6 comments
Labels
C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.

Comments

@andybons
Copy link
Contributor

cd /home/vagrant/gopath/src/github.com/cockroachdb/cockroach/proto; make static_lib
make[1]: Entering directory `/home/vagrant/gopath/src/github.com/cockroachdb/cockroach/proto'
protoc --gogo_out=. --cpp_out=lib --proto_path=.:../../../../:../../../../code.google.com/p/gogoprotobuf/protobuf:../../../../code.google.com/p/gogoprotobuf/gogoproto api.proto config.proto data.proto errors.proto
/home/vagrant/gopath/bin/protoc-gen-gogo: 1: /home/vagrant/gopath/bin/protoc-gen-gogo: Syntax error: "(" unexpected
--gogo_out: protoc-gen-gogo: Plugin failed with status code 2.
make[1]: *** [api.pb.go] Error 1
make[1]: Leaving directory `/home/vagrant/gopath/src/github.com/cockroachdb/cockroach/proto'
make: *** [roachproto] Error 2
@andybons andybons added the bug label Aug 21, 2014
@spencerkimball
Copy link
Member

This doesn't happen for me. What gives?

On Thu, Aug 21, 2014 at 1:53 PM, Andrew Bonventre notifications@github.com
wrote:

cd /home/vagrant/gopath/src/github.com/cockroachdb/cockroach/proto; make static_lib
make[1]: Entering directory /home/vagrant/gopath/src/github.com/cockroachdb/cockroach/proto' protoc --gogo_out=. --cpp_out=lib --proto_path=.:../../../../:../../../../code.google.com/p/gogoprotobuf/protobuf:../../../../code.google.com/p/gogoprotobuf/gogoproto api.proto config.proto data.proto errors.proto /home/vagrant/gopath/bin/protoc-gen-gogo: 1: /home/vagrant/gopath/bin/protoc-gen-gogo: Syntax error: "(" unexpected --gogo_out: protoc-gen-gogo: Plugin failed with status code 2. make[1]: *** [api.pb.go] Error 1 make[1]: Leaving directory/home/vagrant/gopath/src/github.com/cockroachdb/cockroach/proto'
make: *** [roachproto] Error 2


Reply to this email directly or view it on GitHub
#35.

@andybons
Copy link
Contributor Author

This is now an issue on linux where the linker is not seeing the lroachproto symbols:

If I remove -lroachproto from the LDFLAGS line, it spits the same error. This leads me to believe it’s not being properly resolved during linking on linux.

/*
#cgo LDFLAGS: -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -lroachproto -lroach -lprotobuf
#cgo linux LDFLAGS: -lrt
#cgo darwin LDFLAGS: -lc++
#include <stdlib.h>
#include "rocksdb/c.h"
#include "rocksdb_merge.h"
#include "rocksdb_compaction.h"
*/
$ make
cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb; make static_lib
make[1]: Entering directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'
g++ -g -Wall -Werror -Wsign-compare -I. -I./include -std=c++11  -DROCKSDB_PLATFORM_POSIX  -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_ATOMIC_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS=google -DZLIB -DBZIP2   -DHAVE_JEMALLOC -O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -DNDEBUG -Woverloaded-virtual -c util/build_version.cc -o util/build_version.o 
rm -f librocksdb.a
ar -rs librocksdb.a db/builder.o db/c.o db/column_family.o db/compaction.o db/compaction_picker.o db/db_filesnapshot.o db/dbformat.o db/db_impl.o db/db_impl_debug.o db/db_impl_readonly.o db/db_iter.o db/file_indexer.o db/filename.o db/forward_iterator.o db/internal_stats.o db/log_reader.o db/log_writer.o db/memtable.o db/memtable_list.o db/merge_helper.o db/merge_operator.o db/repair.o db/table_cache.o db/table_properties_collector.o db/tailing_iter.o db/transaction_log_impl.o db/version_edit.o db/version_set.o db/write_batch.o table/adaptive_table_factory.o table/block_based_table_builder.o table/block_based_table_factory.o table/block_based_table_reader.o table/block_builder.o table/block.o table/block_hash_index.o table/block_prefix_index.o table/bloom_block.o table/cuckoo_table_builder.o table/cuckoo_table_reader.o table/filter_block.o table/flush_block_policy.o table/format.o table/iterator.o table/merger.o table/meta_blocks.o table/plain_table_builder.o table/plain_table_factory.o table/plain_table_index.o table/plain_table_key_coding.o table/plain_table_reader.o table/table_properties.o table/two_level_iterator.o util/arena.o util/auto_roll_logger.o util/blob_store.o util/bloom.o util/build_version.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/dynamic_bloom.o util/env.o util/env_hdfs.o util/env_posix.o util/filter_policy.o util/hash.o util/hash_cuckoo_rep.o util/hash_linklist_rep.o util/hash_skiplist_rep.o util/histogram.o util/iostats_context.o utilities/backupable/backupable_db.o utilities/document/document_db.o utilities/document/json_document.o utilities/geodb/geodb_impl.o utilities/merge_operators/put.o utilities/merge_operators/string_append/stringappend2.o utilities/merge_operators/string_append/stringappend.o utilities/merge_operators/uint64add.o utilities/redis/redis_lists.o utilities/spatialdb/spatial_db.o utilities/ttl/db_ttl_impl.o util/ldb_cmd.o util/ldb_tool.o util/log_buffer.o util/logging.o util/murmurhash.o util/options_builder.o util/options.o util/perf_context.o util/rate_limiter.o util/skiplistrep.o util/slice.o util/statistics.o util/status.o util/string_util.o util/sync_point.o util/thread_local.o util/vectorrep.o util/xxhash.o port/port_posix.o port/stack_trace.o 
ar: creating librocksdb.a
make[1]: Leaving directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'
cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_lib
make[1]: Entering directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'
make[1]: Nothing to be done for `static_lib'.
make[1]: Leaving directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'
cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_lib
make[1]: Entering directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'
make[1]: Nothing to be done for `static_lib'.
make[1]: Leaving directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'
CGO_LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " go build -o cockroach
# github.com/cockroachdb/cockroach/storage/engine
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `GCCompactionFilter':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:102: undefined reference to `proto::ReadWriteCmdResponse::ReadWriteCmdResponse()'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:103: undefined reference to `google::protobuf::MessageLite::ParseFromArray(void const*, int)'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:113: undefined reference to `proto::ReadWriteCmdResponse::~ReadWriteCmdResponse()'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:120: undefined reference to `proto::Transaction::Transaction()'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:121: undefined reference to `google::protobuf::MessageLite::ParseFromArray(void const*, int)'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:126: undefined reference to `proto::Transaction::~Transaction()'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:114: undefined reference to `proto::ReadWriteCmdResponse::~ReadWriteCmdResponse()'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/compaction.cc:127: undefined reference to `proto::Transaction::~Transaction()'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::Transaction::timestamp() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/data.pb.h:1347: undefined reference to `proto::Transaction::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ResponseHeader::timestamp() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:4341: undefined reference to `proto::ResponseHeader::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::PutResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:4761: undefined reference to `proto::PutResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ConditionalPutResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:4921: undefined reference to `proto::ConditionalPutResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::IncrementResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:5065: undefined reference to `proto::IncrementResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::DeleteResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:5171: undefined reference to `proto::DeleteResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::DeleteRangeResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:5277: undefined reference to `proto::DeleteRangeResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::EndTransactionResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:5536: undefined reference to `proto::EndTransactionResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::AccumulateTSResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:5728: undefined reference to `proto::AccumulateTSResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ReapQueueResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:5834: undefined reference to `proto::ReapQueueResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::EnqueueUpdateResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:5943: undefined reference to `proto::EnqueueUpdateResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::EnqueueMessageResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:6065: undefined reference to `proto::EnqueueMessageResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::InternalHeartbeatTxnResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:6280: undefined reference to `proto::InternalHeartbeatTxnResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::InternalResolveIntentResponse::header() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:6409: undefined reference to `proto::InternalResolveIntentResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ReadWriteCmdResponse::put() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:6911: undefined reference to `proto::ReadWriteCmdResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ReadWriteCmdResponse::conditional_put() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:6949: undefined reference to `proto::ReadWriteCmdResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ReadWriteCmdResponse::increment() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:6987: undefined reference to `proto::ReadWriteCmdResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ReadWriteCmdResponse::delete_() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:7025: undefined reference to `proto::ReadWriteCmdResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o): In function `proto::ReadWriteCmdResponse::delete_range() const':
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:7063: undefined reference to `proto::ReadWriteCmdResponse::default_instance_'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib/libroach.a(compaction.o):/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/api.pb.h:7101: more undefined references to `proto::ReadWriteCmdResponse::default_instance_' follow
collect2: error: ld returned 1 exit status
make: *** [build] Error 2

@andybons andybons changed the title vagrant: build error with protobufs linux: link error with -lroachproto Aug 23, 2014
@andybons
Copy link
Contributor Author

@petermattis pointed me here: http://stackoverflow.com/questions/45135/linker-order-gcc/409470#409470 but even after rearranging the -l archives each way in #cgo LDFLAGS, unresolved symbols still show up. The current config I’m going with is

#cgo LDFLAGS: -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -lroach -lroachproto -lprotobuf

with the output being:

$ make
cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb; make static_lib
make[1]: Entering directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'
g++ -g -Wall -Werror -Wsign-compare -I. -I./include -std=c++11  -DROCKSDB_PLATFORM_POSIX  -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_ATOMIC_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS=google -DZLIB -DBZIP2   -DHAVE_JEMALLOC -O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -DNDEBUG -Woverloaded-virtual -c util/build_version.cc -o util/build_version.o 
rm -f librocksdb.a
ar -rs librocksdb.a db/builder.o db/c.o db/column_family.o db/compaction.o db/compaction_picker.o db/db_filesnapshot.o db/dbformat.o db/db_impl.o db/db_impl_debug.o db/db_impl_readonly.o db/db_iter.o db/file_indexer.o db/filename.o db/forward_iterator.o db/internal_stats.o db/log_reader.o db/log_writer.o db/memtable.o db/memtable_list.o db/merge_helper.o db/merge_operator.o db/repair.o db/table_cache.o db/table_properties_collector.o db/tailing_iter.o db/transaction_log_impl.o db/version_edit.o db/version_set.o db/write_batch.o table/adaptive_table_factory.o table/block_based_table_builder.o table/block_based_table_factory.o table/block_based_table_reader.o table/block_builder.o table/block.o table/block_hash_index.o table/block_prefix_index.o table/bloom_block.o table/cuckoo_table_builder.o table/cuckoo_table_reader.o table/filter_block.o table/flush_block_policy.o table/format.o table/iterator.o table/merger.o table/meta_blocks.o table/plain_table_builder.o table/plain_table_factory.o table/plain_table_index.o table/plain_table_key_coding.o table/plain_table_reader.o table/table_properties.o table/two_level_iterator.o util/arena.o util/auto_roll_logger.o util/blob_store.o util/bloom.o util/build_version.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/dynamic_bloom.o util/env.o util/env_hdfs.o util/env_posix.o util/filter_policy.o util/hash.o util/hash_cuckoo_rep.o util/hash_linklist_rep.o util/hash_skiplist_rep.o util/histogram.o util/iostats_context.o utilities/backupable/backupable_db.o utilities/document/document_db.o utilities/document/json_document.o utilities/geodb/geodb_impl.o utilities/merge_operators/put.o utilities/merge_operators/string_append/stringappend2.o utilities/merge_operators/string_append/stringappend.o utilities/merge_operators/uint64add.o utilities/redis/redis_lists.o utilities/spatialdb/spatial_db.o utilities/ttl/db_ttl_impl.o util/ldb_cmd.o util/ldb_tool.o util/log_buffer.o util/logging.o util/murmurhash.o util/options_builder.o util/options.o util/perf_context.o util/rate_limiter.o util/skiplistrep.o util/slice.o util/statistics.o util/status.o util/string_util.o util/sync_point.o util/thread_local.o util/vectorrep.o util/xxhash.o port/port_posix.o port/stack_trace.o 
ar: creating librocksdb.a
make[1]: Leaving directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'
cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_lib
make[1]: Entering directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'
make[1]: Nothing to be done for `static_lib'.
make[1]: Leaving directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'
cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_lib
make[1]: Entering directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'
make[1]: Nothing to be done for `static_lib'.
make[1]: Leaving directory `/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'
CGO_LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " go build -o cockroach
# github.com/cockroachdb/cockroach/storage/engine
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/libroachproto.a(api.pb.o): In function `google::protobuf::GoogleOnceInit(long*, void (*)())':
api.pb.cc:(.text._ZN6google8protobuf14GoogleOnceInitEPlPFvvE[_ZN6google8protobuf14GoogleOnceInitEPlPFvvE]+0x4f): undefined reference to `google::protobuf::GoogleOnceInitImpl(long*, google::protobuf::Closure*)'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/libroachproto.a(api.pb.o): In function `bool google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<long, (google::protobuf::internal::WireFormatLite::FieldType)3>(google::protobuf::io::CodedInputStream*, google::protobuf::RepeatedField<long>*)':
api.pb.cc:(.text._ZN6google8protobuf8internal14WireFormatLite19ReadPackedPrimitiveIlLNS2_9FieldTypeE3EEEbPNS0_2io16CodedInputStreamEPNS0_13RepeatedFieldIT_EE[_ZN6google8protobuf8internal14WireFormatLite19ReadPackedPrimitiveIlLNS2_9FieldTypeE3EEEbPNS0_2io16CodedInputStreamEPNS0_13RepeatedFieldIT_EE]+0x88): undefined reference to `google::protobuf::io::CodedInputStream::BytesUntilLimit() const'
collect2: error: ld returned 1 exit status
make: *** [build] Error 2

@petermattis
Copy link
Collaborator

How were you testing this? "vagrant up" gave me a bunch of build errors for
protobuf. Seems like the version of gcc we're using is complaining about
some construct in one of the protobuf headers. I had to do
"CPPFLAGS=-Wno-unused-local-typedefs ./configure" in order for it to work.
But now I'm getting some other weird linker errors. I'll try to take
another look tomorrow, just wanted to send this along in case it helps you
make progress.

On Sat, Aug 23, 2014 at 3:22 PM, Andrew Bonventre notifications@github.com
wrote:

@petermattis https://github.com/petermattis pointed me here:
http://stackoverflow.com/questions/45135/linker-order-gcc/409470#409470
but even after rearranging the -l archives each way in #cgo LDFLAGS,
unresolved symbols still show up. The current config I’m going with is

#cgo LDFLAGS: -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -lroach -lroachproto -lprotobuf

with the output being:

$ makecd /home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb; make static_lib
make[1]: Entering directory /home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'g++ -g -Wall -Werror -Wsign-compare -I. -I./include -std=c++11 -DROCKSDB_PLATFORM_POSIX -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_ATOMIC_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS=google -DZLIB -DBZIP2 -DHAVE_JEMALLOC -O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -DNDEBUG -Woverloaded-virtual -c util/build_version.cc -o util/build_version.o rm -f librocksdb.aar -rs librocksdb.a db/builder.o db/c.o db/column_family.o db/compaction.o db/compaction_picker.o db/db_filesnapshot.o db/dbformat.o db/db_impl.o db/db_impl_debug.o db/db_impl_readonly.o db/db_iter.o db/file_indexer.o db/filename.o db/forward_iterator.o db/internal_stats.o db/log_reader.o db/log_writer.o db/memtable.o db/memtable_list.o db/merge_helper.o db/merge_operator.o db/repair.o db/table_cache.o db/table_properties_collector.o db/tailing_iter.o db/transaction_log_impl.o db/version_edit.o db/version_set.o db/write_batch.o table/adaptive_table_factory.o table/block_based_table_builder.o table/block_based_table_factory.o table/block_based_table_reader.o table/block_builder.o table/block.o table/block_hash_index.o table/block_prefix_index.o table/bloom_block.o table/cuckoo_table_builder.o table/cuckoo_table_reader.o table/filter_block.o table/flush_block_policy.o table/format.o table/iterator.o table/merger.o table/meta_blocks.o table/plain_table_builder.o table/plain_table_factory.o table/plain_table_index.o table/plain_table_key_coding.o table/plain_table_reader.o table/table_properties.o table/two_level_iterator.o util/arena.o util/auto_roll_logger.o util/blob_store.o util/bloom.o util/build_version.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/dynamic_bloom.o util/env.o util/env_hdfs.o util/env_posix.o util/filter_policy.o util/hash.o util/hash_cuckoo_rep.o util/hash_linklist_rep.o util/hash_skiplist_rep.o util/histogram.o util/iostats_context.o utilities/backupable/backupable_db.o utilities/document/document_db.o utilities/document/json_document.o utilities/geodb/geodb_impl.o utilities/merge_operators/put.o utilities/merge_operators/string_append/stringappend2.o utilities/merge_operators/string_append/stringappend.o utilities/merge_operators/uint64add.o utilities/redis/redis_lists.o utilities/spatialdb/spatial_db.o utilities/ttl/db_ttl_impl.o util/ldb_cmd.o util/ldb_tool.o util/log_buffer.o util/logging.o util/murmurhash.o util/options_builder.o util/options.o util/perf_context.o util/rate_limiter.o util/skiplistrep.o util/slice.o util/statistics.o util/status.o util/string_util.o util/sync_point.o util/thread_local.o util/vectorrep.o util/xxhash.o port/port_posix.o port/stack_trace.o ar: creating librocksdb.amake[1]: Leaving directory/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_lib
make[1]: Entering directory /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'make[1]: Nothing to be done forstatic_lib'.
make[1]: Leaving directory /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_libmake[1]: Entering directory/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'
make[1]: Nothing to be done for static_lib'.make[1]: Leaving directory/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'CGO_LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " go build -o cockroach# github.com/cockroachdb/cockroach/storage/engine
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/libroachproto.a(api.pb.o): In function google::protobuf::GoogleOnceInit(long*, void (*)())':api.pb.cc:(.text._ZN6google8protobuf14GoogleOnceInitEPlPFvvE[_ZN6google8protobuf14GoogleOnceInitEPlPFvvE]+0x4f): undefined reference togoogle::protobuf::GoogleOnceInitImpl(long
, google::protobuf::Closure
)'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/libroachproto.a(api.pb.o): In function bool google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<long, (google::protobuf::internal::WireFormatLite::FieldType)3>(google::protobuf::io::CodedInputStream*, google::protobuf::RepeatedField<long>*)':api.pb.cc:(.text._ZN6google8protobuf8internal14WireFormatLite19ReadPackedPrimitiveIlLNS2_9FieldTypeE3EEEbPNS0_2io16CodedInputStreamEPNS0_13RepeatedFieldIT_EE[_ZN6google8protobuf8internal14WireFormatLite19ReadPackedPrimitiveIlLNS2_9FieldTypeE3EEEbPNS0_2io16CodedInputStreamEPNS0_13RepeatedFieldIT_EE]+0x88): undefined reference togoogle::protobuf::io::CodedInputStream::BytesUntilLimit() const'
collect2: error: ld returned 1 exit status
make: *** [build] Error 2


Reply to this email directly or view it on GitHub
#35 (comment)
.

@petermattis
Copy link
Collaborator

Found it: /usr/lib/libprotobuf.a != /usr/local/lib/libprotobuf.a. The
former is already installed on the system. The latter is the one we want to
use. Need to add -L/usr/local/lib to the Makefile LDFLAGS. But perhaps we
should be vendoring protobuf (and snappy). God, Makefiles suck, why is
librocksdb.a being relinked every time I run make?

On Sat, Aug 23, 2014 at 9:10 PM, Peter Mattis petermattis@gmail.com wrote:

How were you testing this? "vagrant up" gave me a bunch of build errors
for protobuf. Seems like the version of gcc we're using is complaining
about some construct in one of the protobuf headers. I had to do
"CPPFLAGS=-Wno-unused-local-typedefs ./configure" in order for it to work.
But now I'm getting some other weird linker errors. I'll try to take
another look tomorrow, just wanted to send this along in case it helps you
make progress.

On Sat, Aug 23, 2014 at 3:22 PM, Andrew Bonventre <
notifications@github.com> wrote:

@petermattis https://github.com/petermattis pointed me here:
http://stackoverflow.com/questions/45135/linker-order-gcc/409470#409470
but even after rearranging the -l archives each way in #cgo LDFLAGS,
unresolved symbols still show up. The current config I’m going with is

#cgo LDFLAGS: -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -lroach -lroachproto -lprotobuf

with the output being:

$ makecd /home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb; make static_lib
make[1]: Entering directory /home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'g++ -g -Wall -Werror -Wsign-compare -I. -I./include -std=c++11 -DROCKSDB_PLATFORM_POSIX -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_ATOMIC_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS=google -DZLIB -DBZIP2 -DHAVE_JEMALLOC -O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -DNDEBUG -Woverloaded-virtual -c util/build_version.cc -o util/build_version.o rm -f librocksdb.aar -rs librocksdb.a db/builder.o db/c.o db/column_family.o db/compaction.o db/compaction_picker.o db/db_filesnapshot.o db/dbformat.o db/db_impl.o db/db_impl_debug.o db/db_impl_readonly.o db/db_iter.o db/file_indexer.o db/filename.o db/forward_iterator.o db/internal_stats.o db/log_reader.o db/log_writer.o db/memtable.o db/memtable_list.o db/merge_helper.o db/merge_operator.o db/repair.o db/table_cache.o db/table_properties_collector.o db/tailing_iter.o db/transaction_log_impl.o db/version_edit.o db/version_set.o db/write_batch.o table/adaptive_table_factory.o table/block_based_table_builder.o table/block_based_table_factory.o table/block_based_table_reader.o table/block_builder.o table/block.o table/block_hash_index.o table/block_prefix_index.o table/bloom_block.o table/cuckoo_table_builder.o table/cuckoo_table_reader.o table/filter_block.o table/flush_block_policy.o table/format.o table/iterator.o table/merger.o table/meta_blocks.o table/plain_table_builder.o table/plain_table_factory.o table/plain_table_index.o table/plain_table_key_coding.o table/plain_table_reader.o table/table_properties.o table/two_level_iterator.o util/arena.o util/auto_roll_logger.o util/blob_store.o util/bloom.o util/build_version.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/dynamic_bloom.o util/env.o util/env_hdfs.o util/env_posix.o util/filter_policy.o util/hash.o util/hash_cuckoo_rep.o util/hash_linklist_rep.o util/hash_skiplist_rep.o util/histogram.o util/iostats_context.o utilities/backupable/backupable_db.o utilities/document/document_db.o utilities/document/json_document.o utilities/geodb/geodb_impl.o utilities/merge_operators/put.o utilities/merge_operators/string_append/stringappend2.o utilities/merge_operators/string_append/stringappend.o utilities/merge_operators/uint64add.o utilities/redis/redis_lists.o utilities/spatialdb/spatial_db.o utilities/ttl/db_ttl_impl.o util/ldb_cmd.o util/ldb_tool.o util/log_buffer.o util/logging.o util/murmurhash.o util/options_builder.o util/options.o util/perf_context.o util/rate_limiter.o util/skiplistrep.o util/slice.o util/statistics.o util/status.o util/string_util.o util/sync_point.o util/thread_local.o util/vectorrep.o util/xxhash.o port/port_posix.o port/stack_trace.o ar: creating librocksdb.amake[1]: Leaving directory/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb'cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_lib
make[1]: Entering directory /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'make[1]: Nothing to be done forstatic_lib'.
make[1]: Leaving directory /home/vagrant/go/src/github.com/cockroachdb/cockroach/proto'cd /home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib; LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " make static_libmake[1]: Entering directory/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'
make[1]: Nothing to be done for static_lib'.make[1]: Leaving directory/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib'CGO_LDFLAGS="-L/home/vagrant/go/src/github.com/cockroachdb/cockroach/_vendor/rocksdb -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -L/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " CGO_CXXFLAGS="-I/home/vagrant/go/src/github.com/cockroachdb/cockroach/vendor/rocksdb/include -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib -I/home/vagrant/go/src/github.com/cockroachdb/cockroach/roachlib " go build -o cockroach# github.com/cockroachdb/cockroach/storage/engine
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/libroachproto.a(api.pb.o): In function google::protobuf::GoogleOnceInit(long*, void (*)())':api.pb.cc:(.text._ZN6google8protobuf14GoogleOnceInitEPlPFvvE[_ZN6google8protobuf14GoogleOnceInitEPlPFvvE]+0x4f): undefined reference togoogle::protobuf::GoogleOnceInitImpl(long
, google::protobuf::Closure
)'
/home/vagrant/go/src/github.com/cockroachdb/cockroach/proto/lib/libroachproto.a(api.pb.o): In function bool google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<long, (google::protobuf::internal::WireFormatLite::FieldType)3>(google::protobuf::io::CodedInputStream*, google::protobuf::RepeatedField<long>*)':api.pb.cc:(.text._ZN6google8protobuf8internal14WireFormatLite19ReadPackedPrimitiveIlLNS2_9FieldTypeE3EEEbPNS0_2io16CodedInputStreamEPNS0_13RepeatedFieldIT_EE[_ZN6google8protobuf8internal14WireFormatLite19ReadPackedPrimitiveIlLNS2_9FieldTypeE3EEEbPNS0_2io16CodedInputStreamEPNS0_13RepeatedFieldIT_EE]+0x88): undefined reference togoogle::protobuf::io::CodedInputStream::BytesUntilLimit() const'
collect2: error: ld returned 1 exit status
make: *** [build] Error 2


Reply to this email directly or view it on GitHub
#35 (comment)
.

@andybons
Copy link
Contributor Author

Fixed in d1150e5

But agreed on Makefiles being crappy. Filed #38

soniabhishek pushed a commit to soniabhishek/cockroach that referenced this issue Feb 15, 2017
Develop to master (rabbitmq changes)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.
Projects
None yet
Development

No branches or pull requests

3 participants