Link Failed on Ubuntu 20.04 wtih gcc 9.4
- Dominant language
- C++
- Stars
- 32.1k
- Forks
- 6.9k
- Avg merge
- 32m
- Merged PRs (30d)
- 1
Description
> Note: Please use Issues only for bug reports. For questions, discussions, feature requests, etc. post to dev group: https://groups.google.com/forum/#!forum/rocksdb or https://www.facebook.com/groups/rocksdb.dev
With RocksDB 6.12.6. failed at link phase, gcc report :
``
/usr/bin/ld: ../../stonedb/libstonedb.a(kv_store.cpp.o): in function `stonedb::index::KVStore::Init()':
kv_store.cpp:(.text+0x2a06): undefined reference to `rocksdb::DB::ListColumnFamilies(rocksdb::DBOptions const&, std::string const&, std::vector >*)'
collect2: error: ld returned 1 exit status
``
and the source code as following:
``
rocksdb::TransactionDBOptions txn_db_options;
std::vector cf_names;
std::vector cf_descr;
std::vector cf_handles;
rocksdb::Options options;
options.create_if_missing = true;
if (sstd_sysvar_index_cache_size != 0) {
bbto_.no_block_cache = false;
bbto_.cache_index_and_filter_blocks = true;
bbto_.block_cache = rocksdb::NewLRUCache(stonedb_sysvar_index_cache_size << 20);
options.table_factory.reset(rocksdb::NewBlockBasedTableFactory(bbto_));
}
rocksdb::DBOptions db_option(options);
auto rocksdb_datadir = kv_data_dir / ".index";
int max_compact_threads = std::thread::hardware_concurrency() / 4;
max_compact_threads = (max_compact_threads > 1) ? max_compact_threads : 1;
db_option.max_background_compactions = max_compact_threads;
db_option.max_subcompactions = max_compact_threads;
db_option.env->SetBackgroundThreads(max_compact_threads, rocksdb::Env::Priority::LOW);
db_option.statistics = rocksdb::CreateDBStatistics();
// get column family names from manifest file
rocksdb::Status status = rocksdb::DB::**ListColumnFamilies**(db_option, rocksdb_datadir, &cf_names);
//rocksdb::Status status ;
if (!status.ok() &&
((status.subcode() == rocksdb::Status::kNone) || (status.subcode() == rocksdb::Status::kPathNotFound))) {
STONEDB_LOG(LogCtl_Level::INFO, "First init rocksdb, create default column family");
cf_names.push_back(DEFAULT_CF_NAME);
}
``
and the link options is:
``
/usr/bin/c++ -D_GLIBCXX_USE_CXX11_ABI=0 -Wall -Wextra -Wformat-security -Wvla -Wno-unknown-pragmas -Woverloaded-virtual -Wno-unused-parameter -Wno-register -O3 -DNDEBUG -std=c++1z -fno-sized-deallocation -Wl,--no-as-needed -DDBUG_OFF -static-libstdc++ -static-libgcc -Wl,--no-as-needed CMakeFiles/pfs_connect_attr-t.dir/pfs_connect_attr-t.cc.o CMakeFiles/pfs_connect_attr-t.dir/__/__/__/sql/sql_builtin.cc.o CMakeFiles/pfs_connect_attr-t.dir/__/__/__/mysys/string.c.o -o pfs_connect_attr-t ../../../unittest/mytap/libmytap.a ../libperfschema.a ../../csv/libcsv.a ../../heap/libheap.a ../../innobase/libinnobase.a ../../../zlib/libzlib.a ../../myisam/libmyisam.a ../libperfschema.a ../../../sql/libsql.a ../../../sql/libbinlog.a ../../../sql/librpl.a ../../../sql/libmaster.a ../../../sql/libslave.a ../../../sql/libsql.a ../../../mysys/libmysys.a ../../../mysys_ssl/libmysys_ssl.a ../../../vio/libvio.a ../../../extra/yassl/libyassl.a ../../../extra/yassl/taocrypt/libtaocrypt.a ../../../strings/libstrings.a ../../../dbug/libdbug.a ../../../regex/libregex.a ../../../mysys/libmysys.a ../../../zlib/libzlib.a ../libperfschema.a ../../csv/libcsv.a ../../heap/libheap.a ../../innobase/libinnobase.a ../../myisam/libmyisam.a ../../../mysys/libmysys.a ../../../dbug/libdbug.a ../../../mysys/libmysys.a ../../../dbug/libdbug.a ../../../zlib/libzlib.a ../../../strings/libstrings.a ../../stonedb/libstonedb.a /usr/lib/x86_64-linux-gnu/librocksdb.a -lm /usr/local/lib/libboost_system.a -lsnappy -lbz2 -llz4 -lzstd -lrt /usr/local/lib/libmarisa.a /usr/local/lib/libboost_thread.a ../../../sql/libpartition.a -lcrypt -ldl -lpthread -lstdc++fs
``
I have added the option `-lrocksdb` to link command. and why only the `ListColumnFamilies` is unreferece. But the same code works with gcc 7.3. why it failed when i upgrade the gcc version from 7.3 to 9.4.
Thanks
### Expected behavior
### Actual behavior
### Steps to reproduce the behavior
Contributor guide
Assessment
This issue has not been assessed yet.