The `bitcoind` binary contains more than 79 global symbols as reported by `nm` (in the BSS data section and initialized data section, somewhat filtered - see oneliner below):

```
$ for SYMBOL in $(nm src/bitcoind | grep -E ' [BD] ' | c++filt | cut -f3- -d' ' | grep -v @ | grep -v : | sort | grep '[a-z]' | sort -u | grep -vE '^_'); do
     REFERENCES=$(git grep -lE "([^a-zA-Z]|^)${SYMBOL}([^a-zA-Z]|\$)" -- "*.cpp" "*.h")
     N_REFERENCES=$(wc -l <<< "${REFERENCES}")
     echo -n "Found ${N_REFERENCES} use(s) of ${SYMBOL}: "
     sort -u <<< "${REFERENCES}" | tr "\n" " "
     echo
  done
Found 1 use(s) of boundSockets: src/httpserver.cpp
Found 25 use(s) of chainActive: src/bench/block_assemble.cpp src/bench/duplicate_inputs.cpp src/index/base.cpp src/index/txindex.cpp src/init.cpp src/interfaces/chain.cpp src/interfaces/node.cpp src/miner.cpp src/net_processing.cpp src/policy/fees.cpp src/qt/test/wallettests.cpp src/rest.cpp src/rpc/blockchain.cpp src/rpc/mining.cpp src/rpc/rawtransaction.cpp src/test/denialofservice_tests.cpp src/test/miner_tests.cpp src/test/test_bitcoin.cpp src/test/txvalidationcache_tests.cpp src/test/validation_block_tests.cpp src/txmempool.h src/validation.cpp src/validation.h src/wallet/test/wallet_tests.cpp src/wallet/wallet.cpp
Found 43 use(s) of cs_main: src/bench/block_assemble.cpp src/bench/duplicate_inputs.cpp src/bench/mempool_eviction.cpp src/bench/rpc_mempool.cpp src/index/base.cpp src/index/txindex.cpp src/init.cpp src/interfaces/chain.cpp src/interfaces/node.cpp src/interfaces/wallet.cpp src/miner.cpp src/net.h src/net_processing.cpp src/net_processing.h src/node/transaction.cpp src/qt/clientmodel.cpp src/qt/peertablemodel.cpp src/rest.cpp src/rpc/blockchain.cpp src/rpc/mining.cpp src/rpc/misc.cpp src/rpc/net.cpp src/rpc/rawtransaction.cpp src/test/blockencodings_tests.cpp src/test/denialofservice_tests.cpp src/test/mempool_tests.cpp src/test/miner_tests.cpp src/test/policyestimator_tests.cpp src/test/script_p2sh_tests.cpp src/test/test_bitcoin.cpp src/test/transaction_tests.cpp src/test/txvalidationcache_tests.cpp src/test/txvalidation_tests.cpp src/test/validation_block_tests.cpp src/txmempool.h src/validation.cpp src/validation.h src/validationinterface.cpp src/validationinterface.h src/wallet/test/wallet_tests.cpp src/wallet/wallet.cpp src/wallet/wallet.h src/zmq/zmqpublishnotifier.cpp
Found 4 use(s) of cs_mapLocalHost: src/net.cpp src/net.h src/rpc/net.cpp src/test/net_tests.cpp
Found 1 use(s) of cs_warnings: src/warnings.cpp
Found 7 use(s) of dustRelayFee: src/init.cpp src/interfaces/node.cpp src/policy/policy.cpp src/policy/policy.h src/test/transaction_tests.cpp src/wallet/fees.cpp src/wallet/wallet.cpp
Found 1 use(s) of eventHTTP: src/httpserver.cpp
Found 4 use(s) of fAcceptDatacarrier: src/init.cpp src/policy/policy.cpp src/script/standard.cpp src/script/standard.h
Found 4 use(s) of fCheckBlockIndex: src/init.cpp src/test/test_bitcoin.cpp src/validation.cpp src/validation.h
Found 4 use(s) of fCheckpointsEnabled: src/init.cpp src/test/miner_tests.cpp src/validation.cpp src/validation.h
Found 3 use(s) of fDiscover: src/init.cpp src/net.cpp src/net.h
Found 6 use(s) of feeEstimator: src/init.cpp src/interfaces/chain.cpp src/interfaces/node.cpp src/rpc/mining.cpp src/validation.cpp src/validation.h
Found 3 use(s) of fEnableReplacement: src/init.cpp src/validation.cpp src/validation.h
Found 1 use(s) of fFeeEstimatesInitialized: src/init.cpp
Found 3 use(s) of fHavePruned: src/init.cpp src/validation.cpp src/validation.h
Found 5 use(s) of fImporting: src/init.cpp src/interfaces/node.cpp src/net_processing.cpp src/validation.cpp src/validation.h
Found 4 use(s) of fIsBareMultisigStd: src/init.cpp src/policy/policy.cpp src/validation.cpp src/validation.h
Found 1 use(s) of fLargeWorkForkFound: src/warnings.cpp
Found 1 use(s) of fLargeWorkInvalidChainFound: src/warnings.cpp
Found 5 use(s) of fListen: src/init.cpp src/net.cpp src/net.h src/net_processing.cpp src/qt/optionsmodel.cpp
Found 6 use(s) of fLogIPs: src/init.cpp src/logging.cpp src/logging.h src/net.cpp src/net_processing.cpp src/rpc/server.cpp
Found 4 use(s) of fNameLookup: src/init.cpp src/netbase.cpp src/netbase.h src/net.cpp
Found 6 use(s) of fPruneMode: src/init.cpp src/interfaces/chain.cpp src/net_processing.cpp src/rpc/blockchain.cpp src/validation.cpp src/validation.h
Found 5 use(s) of fReindex: src/init.cpp src/interfaces/node.cpp src/net_processing.cpp src/validation.cpp src/validation.h
Found 5 use(s) of fRelayTxes: src/init.cpp src/net.cpp src/net.h src/net_processing.cpp src/rpc/net.cpp
Found 5 use(s) of fRequireStandard: src/chainparams.cpp src/chainparams.h src/init.cpp src/validation.cpp src/validation.h
Found 51 use(s) of gArgs: src/bench/bench_bitcoin.cpp src/bitcoin-cli.cpp src/bitcoind.cpp src/bitcoin-tx.cpp src/bitcoin-wallet.cpp src/chainparamsbase.cpp src/chainparams.cpp src/dbwrapper.cpp src/dummywallet.cpp src/httprpc.cpp src/httpserver.cpp src/init.cpp src/init.h src/interfaces/chain.cpp src/interfaces/node.cpp src/miner.cpp src/net.cpp src/net_processing.cpp src/qt/bitcoin.cpp src/qt/guiutil.cpp src/qt/intro.cpp src/qt/optionsmodel.cpp src/qt/paymentrequestplus.cpp src/qt/paymentserver.cpp src/qt/test/test_main.cpp src/qt/utilitydialog.cpp src/qt/walletmodel.cpp src/rpc/blockchain.cpp src/rpc/protocol.cpp src/rpc/server.cpp src/script/sigcache.cpp src/test/denialofservice_tests.cpp src/test/getarg_tests.cpp src/test/net_tests.cpp src/test/test_bitcoin.cpp src/timedata.cpp src/torcontrol.cpp src/txdb.cpp src/util/system.cpp src/util/system.h src/validation.cpp src/wallet/coincontrol.cpp src/wallet/db.cpp src/wallet/feebumper.cpp src/wallet/init.cpp src/wallet/test/init_test_fixture.cpp src/wallet/test/init_tests.cpp src/wallet/wallet.cpp src/wallet/walletdb.cpp src/wallet/walletutil.cpp src/zmq/zmqnotificationinterface.cpp
Found 6 use(s) of g_banman: src/banman.h src/init.cpp src/interfaces/node.cpp src/net.h src/rpc/net.cpp src/test/test_bitcoin.cpp
Found 4 use(s) of g_best_block: src/init.cpp src/rpc/mining.cpp src/validation.cpp src/validation.h
Found 4 use(s) of g_best_block_cv: src/init.cpp src/rpc/mining.cpp src/validation.cpp src/validation.h
Found 3 use(s) of g_best_block_mutex: src/rpc/mining.cpp src/validation.cpp src/validation.h
Found 1 use(s) of g_chainstate: src/validation.cpp
Found 8 use(s) of g_connman: src/init.cpp src/interfaces/chain.cpp src/interfaces/node.cpp src/net.h src/node/transaction.cpp src/rpc/mining.cpp src/rpc/net.cpp src/test/test_bitcoin.cpp
Found 3 use(s) of g_cs_orphans: src/net.h src/net_processing.cpp src/test/denialofservice_tests.cpp
Found 4 use(s) of g_is_mempool_loaded: src/init.cpp src/rpc/blockchain.cpp src/validation.cpp src/validation.h
Found 4 use(s) of g_mock_deterministic_tests: src/random.cpp src/test/bloom_tests.cpp src/test/random_tests.cpp src/test/test_bitcoin.h
Found 6 use(s) of g_rpc_interfaces: src/init.cpp src/rpc/rawtransaction.cpp src/rpc/util.cpp src/rpc/util.h src/test/rpc_tests.cpp src/wallet/rpcwallet.cpp
Found 7 use(s) of g_txindex: src/index/txindex.cpp src/index/txindex.h src/init.cpp src/rest.cpp src/rpc/blockchain.cpp src/rpc/rawtransaction.cpp src/validation.cpp
Found 1 use(s) of g_ui_signals: src/ui_interface.cpp
Found 5 use(s) of g_wallet_init_interface: src/dummywallet.cpp src/httprpc.cpp src/init.cpp src/wallet/init.cpp src/walletinitinterface.h
Found 4 use(s) of g_zmq_notification_interface: src/init.cpp src/zmq/zmqnotificationinterface.cpp src/zmq/zmqnotificationinterface.h src/zmq/zmqrpc.cpp
Found 3 use(s) of hashAssumeValid: src/init.cpp src/validation.cpp src/validation.h
Found 8 use(s) of incrementalRelayFee: src/init.cpp src/policy/policy.cpp src/policy/policy.h src/rpc/net.cpp src/txmempool.cpp src/txmempool.h src/validation.cpp src/wallet/feebumper.cpp
Found 1 use(s) of instance_of_cmaincleanup: src/validation.cpp
Found 1 use(s) of instance_of_cnetcleanup: src/net.cpp
Found 1 use(s) of instance_of_cnetprocessingcleanup: src/net_processing.cpp
Found 8 use(s) of mapBlockIndex: src/init.cpp src/interfaces/wallet.cpp src/net_processing.cpp src/rpc/blockchain.cpp src/txdb.cpp src/validation.cpp src/validation.h src/wallet/test/wallet_tests.cpp
Found 4 use(s) of mapLocalHost: src/net.cpp src/net.h src/rpc/net.cpp src/test/net_tests.cpp
Found 2 use(s) of mapOrphanTransactions: src/net_processing.cpp src/test/denialofservice_tests.cpp
Found 11 use(s) of maxTxFee: src/init.cpp src/interfaces/chain.cpp src/interfaces/chain.h src/interfaces/node.cpp src/qt/walletmodel.cpp src/rpc/rawtransaction.cpp src/validation.cpp src/validation.h src/wallet/feebumper.cpp src/wallet/fees.cpp src/wallet/wallet.cpp
Found 55 use(s) of mempool: src/bench/block_assemble.cpp src/bench/mempool_eviction.cpp src/blockencodings.cpp src/blockencodings.h src/init.cpp src/interfaces/chain.cpp src/interfaces/chain.h src/interfaces/node.cpp src/interfaces/node.h src/interfaces/wallet.cpp src/interfaces/wallet.h src/logging.cpp src/miner.cpp src/miner.h src/net.h src/net_processing.cpp src/node/transaction.cpp src/policy/fees.cpp src/policy/fees.h src/policy/policy.h src/policy/rbf.cpp src/policy/rbf.h src/protocol.cpp src/protocol.h src/qt/bitcoinstrings.cpp src/qt/coincontroldialog.cpp src/qt/rpcconsole.h src/qt/test/rpcnestedtests.cpp src/qt/transactionrecord.h src/rest.cpp src/rpc/blockchain.cpp src/rpc/client.cpp src/rpc/mining.cpp src/rpc/misc.cpp src/rpc/net.cpp src/rpc/rawtransaction.cpp src/test/blockencodings_tests.cpp src/test/mempool_tests.cpp src/test/miner_tests.cpp src/test/policyestimator_tests.cpp src/test/test_bitcoin.cpp src/test/txvalidationcache_tests.cpp src/test/txvalidation_tests.cpp src/txmempool.cpp src/txmempool.h src/validation.cpp src/validation.h src/validationinterface.h src/wallet/feebumper.cpp src/wallet/feebumper.h src/wallet/fees.cpp src/wallet/init.cpp src/wallet/rpcwallet.cpp src/wallet/wallet.cpp src/wallet/wallet.h
Found 11 use(s) of minRelayTxFee: src/init.cpp src/net_processing.cpp src/policy/policy.h src/rpc/blockchain.cpp src/rpc/net.cpp src/validation.cpp src/validation.h src/wallet/fees.cpp src/wallet/init.cpp src/wallet/rpcwallet.cpp src/wallet/wallet.cpp
Found 3 use(s) of nBytesPerSigOp: src/init.cpp src/policy/policy.cpp src/policy/policy.h
Found 3 use(s) of nCoinCacheUsage: src/init.cpp src/validation.cpp src/validation.h
Found 4 use(s) of nConnectTimeout: src/init.cpp src/netbase.cpp src/netbase.h src/net.cpp
Found 4 use(s) of nMaxDatacarrierBytes: src/init.cpp src/policy/policy.cpp src/script/standard.cpp src/script/standard.h
Found 3 use(s) of nMaxTipAge: src/init.cpp src/validation.cpp src/validation.h
Found 6 use(s) of nMinimumChainWork: src/chainparams.cpp src/consensus/params.h src/init.cpp src/net_processing.cpp src/validation.cpp src/validation.h
Found 4 use(s) of nPruneTarget: src/init.cpp src/rpc/blockchain.cpp src/validation.cpp src/validation.h
Found 5 use(s) of nScriptCheckThreads: src/init.cpp src/test/checkqueue_tests.cpp src/test/test_bitcoin.cpp src/validation.cpp src/validation.h
Found 13 use(s) of NullUniValue: src/bitcoin-cli.cpp src/httprpc.cpp src/rpc/blockchain.cpp src/rpc/mining.cpp src/rpc/misc.cpp src/rpc/net.cpp src/rpc/protocol.cpp src/rpc/server.cpp src/rpc/server.h src/univalue/include/univalue.h src/univalue/lib/univalue.cpp src/wallet/rpcdump.cpp src/wallet/rpcwallet.cpp
Found 1 use(s) of pathHandlers: src/httpserver.cpp
Found 7 use(s) of pblocktree: src/bench/block_assemble.cpp src/bench/duplicate_inputs.cpp src/index/txindex.cpp src/init.cpp src/test/test_bitcoin.cpp src/validation.cpp src/validation.h
Found 7 use(s) of pcoinsdbview: src/bench/block_assemble.cpp src/bench/duplicate_inputs.cpp src/init.cpp src/rpc/blockchain.cpp src/test/test_bitcoin.cpp src/validation.cpp src/validation.h
Found 15 use(s) of pcoinsTip: src/bench/block_assemble.cpp src/bench/duplicate_inputs.cpp src/init.cpp src/interfaces/node.cpp src/net_processing.cpp src/node/transaction.cpp src/rest.cpp src/rpc/blockchain.cpp src/rpc/rawtransaction.cpp src/test/miner_tests.cpp src/test/test_bitcoin.cpp src/test/txvalidationcache_tests.cpp src/txmempool.h src/validation.cpp src/validation.h
Found 2 use(s) of peerLogic: src/init.cpp src/test/denialofservice_tests.cpp
Found 1 use(s) of pindexBestForkBase: src/validation.cpp
Found 1 use(s) of pindexBestForkTip: src/validation.cpp
Found 5 use(s) of pindexBestHeader: src/interfaces/node.cpp src/net_processing.cpp src/rpc/blockchain.cpp src/validation.cpp src/validation.h
Found 3 use(s) of secp256k1_nonce_function_default: src/secp256k1/include/secp256k1.h src/secp256k1/include/secp256k1_recovery.h src/secp256k1/src/modules/recovery/main_impl.h
Found 2 use(s) of secp256k1_nonce_function_rfc6979: src/key.cpp src/secp256k1/include/secp256k1.h
Found 11 use(s) of tableRPC: src/httprpc.cpp src/init.cpp src/interfaces/node.cpp src/interfaces/wallet.cpp src/qt/test/rpcnestedtests.cpp src/rpc/register.h src/rpc/server.cpp src/rpc/server.h src/test/rpc_tests.cpp src/test/test_bitcoin.cpp src/wallet/test/wallet_test_fixture.cpp
Found 1 use(s) of threadHTTP: src/httpserver.cpp
Found 17 use(s) of uiInterface: src/httprpc.cpp src/httpserver.cpp src/index/base.cpp src/index/txindex.cpp src/init.cpp src/interfaces/chain.cpp src/interfaces/node.cpp src/net.cpp src/net.h src/noui.cpp src/timedata.cpp src/txdb.cpp src/ui_interface.cpp src/ui_interface.h src/validation.cpp src/wallet/init.cpp src/wallet/rpcdump.cpp
Found 3 use(s) of versionbitscache: src/rpc/mining.cpp src/validation.cpp src/validation.h
Found 6 use(s) of VersionBitsDeploymentInfo: src/chainparams.cpp src/consensus/params.h src/rpc/blockchain.cpp src/rpc/mining.cpp src/versionbitsinfo.cpp src/versionbitsinfo.h
$ for SYMBOL in $(nm src/bitcoind | c++filt | grep -E ' B .*[a-z]\[abi:cxx11\]' | cut -f3- -d' ' | cut -f1 -d'[' | sort -u); do
       REFERENCES=$(git grep -lE "([^a-zA-Z]|^)${SYMBOL}([^a-zA-Z]|\$)" -- "*.cpp" "*.h")
       N_REFERENCES=$(wc -l <<< "${REFERENCES}")
       echo -n "Found ${N_REFERENCES} use(s) of ${SYMBOL}: "
       sort -u <<< "${REFERENCES}" | tr "\n" " "
       echo
  done
Found 5 use(s) of strMessageMagic: src/qt/signverifymessagedialog.cpp src/rpc/misc.cpp src/validation.cpp src/validation.h src/wallet/rpcwallet.cpp
Found 1 use(s) of strMiscWarning: src/warnings.cpp
Found 6 use(s) of strSubVersion: src/init.cpp src/net.cpp src/net.h src/net_processing.cpp src/qt/clientmodel.cpp src/rpc/net.cpp
```

Most of these symbols are global (external) for good reasons.

However, judging from the output above the following 16 symbols do not have to be global (external):

```
Found 1 use(s) of boundSockets: src/httpserver.cpp
Found 1 use(s) of cs_warnings: src/warnings.cpp
Found 1 use(s) of eventHTTP: src/httpserver.cpp
Found 1 use(s) of fFeeEstimatesInitialized: src/init.cpp
Found 1 use(s) of fLargeWorkForkFound: src/warnings.cpp
Found 1 use(s) of fLargeWorkInvalidChainFound: src/warnings.cpp
Found 1 use(s) of g_chainstate: src/validation.cpp
Found 1 use(s) of g_ui_signals: src/ui_interface.cpp
Found 1 use(s) of instance_of_cmaincleanup: src/validation.cpp
Found 1 use(s) of instance_of_cnetcleanup: src/net.cpp
Found 1 use(s) of instance_of_cnetprocessingcleanup: src/net_processing.cpp
Found 1 use(s) of pathHandlers: src/httpserver.cpp
Found 1 use(s) of pindexBestForkBase: src/validation.cpp
Found 1 use(s) of pindexBestForkTip: src/validation.cpp
Found 1 use(s) of strMiscWarning: src/warnings.cpp
Found 1 use(s) of threadHTTP: src/httpserver.cpp
```
fs::path config_file_path = GetConfigFile(gArgs.GetArg("-conf", BITCOIN_CONF_FILENAME));
    if (fs::exists(config_file_path)) {
        LogPrintf("Config file: %s\n", config_file_path.string());
    } else if (gArgs.IsArgSet("-conf")) {
        
        InitWarning(strprintf(_("The specified config file %s does not exist\n"), config_file_path.string()));
    } else {
        
        LogPrintf("Config file: %s (not found, skipping)\n", config_file_path.string());
    }
    LogPrintf("Using at most %i automatic connections (%i file descriptors available)\n", nMaxConnections, nFD);
    
    if (gArgs.IsArgSet("-datadir") && !fs::path(gArgs.GetArg("-datadir", "")).is_absolute()) {
        LogPrintf("Warning: relative datadir option '%s' specified, which will be interpreted relative to the " 
                  "current working directory '%s'. This is fragile, because if bitcoin is started in the future "
                  "from a different location, it will be unable to locate the current data files. There could "
                  "also be data loss if bitcoin is started while in a temporary directory.\n",
            gArgs.GetArg("-datadir", ""), fs::current_path().string());
    }
    InitSignatureCache();
    InitScriptExecutionCache();
    LogPrintf("Using %u threads for script verification\n", nScriptCheckThreads);
    if (nScriptCheckThreads) {
        for (int i=0; i<nScriptCheckThreads-1; i++)
            threadGroup.create_thread([i]() { return ThreadScriptCheck(i); });
    }
    
    CScheduler::Function serviceLoop = std::bind(&CScheduler::serviceQueue, &scheduler);
    threadGroup.create_thread(std::bind(&TraceThread<CScheduler::Function>, "scheduler", serviceLoop));