./configure 은 인스톨 하기 위한 환경을 설정하는 것
--prefix={경로} 는 컴파일 된 프로그램을 설치하는 위치
3, 컴파일 및 설치
# make
# make install
4, 공유 라이브러리 자동 로딩 설정
libressl을 공유라이브러리에 설정해줘야한다.
⭐ 잠깐! 공유라이브러리란!?!?
공유 라이브러리는 프로그램이 시작할때 적재되는 라이브러리이다.
공유 라이브러리가 제대로 설치된다면, 그다음에 시작하는 모든 프로그램은 자동적으로 새 공유 라이브러리를 사용한다.
프로그램들은 일반적으로 필요한 기능 중 특정 기능이 이미 구현되어 있으면 그 기능이 구현된 파일을 메모리에 올린 후 그 기능을 사용하게 된다.
이처럼 한 프로그램이라 하더라도 일반적으로 사용되는 여러 기능이 내부에서 다른 so 파일들을 통해서 이루어 지게 된다.
공유라이브러리와 연결된 프로그램을 실행하면 내부적으로 dynamic loader 프로그램이 먼저 동작해서 아래의 순서를 진행한다.
1, dynamic link된 공유 라이브러리 찾아 메모리에 로딩
2, entry function을 찾아 호출
3, 프로그램 실행
linux에서 공유라이브러리 로더 이름은 ld.so이다. 여기서 so는 shared object라는 뜻이다.
so 파일을 찾는 경로 설정은 일반적으로 3가지로 할 수 있다.
1. system default 경로
2. LD_LIBRARY_PATH
3. binary code 에 hard-coding 된 경로
1. system default
> 일반적으로 /usr/local/bin 과 /usr/bin 이다. 이 값은 /etc/ld.so.conf 파일에 설정이 된 값이다.
> 만약 내가 어떤 프로그램을 만들었고, 그것을 내 프로그램이 설치된 경로 밑의 lib 경로에 넣고 그것을 ld.so.conf 에 넣고 싶으면, /etc/ld.so.conf.d/ 경로 밑에 *.conf 파일 이름으로 저장 후 그 파일에 그 경로를 집어 넣으면 된다.
2. LD_LIBRARY_PATH - 환경변수 -> 권장되는 방법은 아님
/etc/profile파일에 아래 추가
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib
3. binary code 에 hard-coding 된 경로(매우 드문 경우)
> 개발자가 아예 소스코드에 so파일 경로를 설정해 버린 경우이다.
> 개발자가 직접 hard-coding한 경로에 so파일을 가져다 놓으면 된다.
나는 [1. system default 경로]로 설정을 해주었다.
먼저 2번 빌드환경 설정하기에서 --prefix={경로}로 지정해준 디렉토리로 들어가야한다.