4paradigm / 4paradigm/OpenMLDB
build: choose the libraries shipped in third-party (by default) or the system libraries
- Dominant language
- C++
- Stars
- 1.7k
- Forks
- 331
- Avg merge
- 12d 12h
- Merged PRs (30d)
- 1
Description
If users compile in its own physical machines rather than the provided docker environment, there may be some linking issues.
## Expected Behavior
use the static libraries located in `.deps/usr/` first, then system dynamic libraries
## Current Behavior
If the system has already installed some libraries, it will link these libraries from system locations rather than the static libraries in the project-specific locations (i.e., `.deps/usr`).
e.g., brpc protobuf glog gflags unwind ssl crypto leveldb z snappy and others
## Possible Solution
use `find_library` or `find_package` to look for the libraries in the project library location (`.deps/usr`) first, then other system locations.
## Steps to Reproduce
1. if the system has already installed the dependent libraries which do not meet the requirements of OpenMLDB, the complication will fail.
## Context (Environment)
custom os environment (not provided docker environment)
## Detailed Description
## Possible Implementation
Contributor guide
Research direction
The issue is about CMake linking order for libraries like brpc, protobuf, glog, etc. Look at the CMakeLists.txt files to see how find_library or find_package is currently used. The goal is to modify the CMake configuration to prioritize static libraries in .deps/usr/ over system libraries. Test by building in a custom OS environment without the provided Docker setup to verify linking works correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100