대학교 3학년 어느날과 똑같이 과제를 하고 있었는데 내 맥북에서 환경변수 오류가 일어났다.
백업프로그램을 만드는 과제에서 파일의 내용을 해시값으로 비교하기 위해 openssl 라이브러리를
이용했는데 자꾸 컴파일 단계에서 -lssl -lcrypto 를 하면 라이브러리를 인식을 못하는 상황이 나왔다.
인터넷을 열심히 찾아보니 라이브러리 환경변수를 바꿔줘야한다는 말을 듣고
vi ~/.zshrc
vi ~/.zprofile
두개의 파일들을 내가 쓰는 homebrew, bin/lib 등등으로 고쳐줬다.
그런데도 여전히 오류가 났다. 이번에는 외국 블로그까지 뒤져가면서 찾아봤지만 답이 없어서...
하나하나 분석을 하다 이상한 점을 찾았다.
sudo gcc -o <실행프로그램이름> <인수1.c> <인수2.c> -lssl -lcrypto
를 하면 라이브러리 연결이 안되더니
gcc -o <실행프로그램이름> <인수1.c> <인수2.c> -lssl -lcrypto
를 하면 잘 컴파일이 되는 것이다....?
sudo?에 문제가 있나? 하고 보니 vi로 수정한 환경변수 파일들은 사용자인 나한테만 적용되고
sudo를 사용하면 루트 권한으로 실행되다 보니 환경변수를 수정해놔도 루트의 환경변수를 불러와서 생긴 일이였다!
간단하다. 만약 죽어도 sudo를 사용해야한다면
sudo -E gcc -o <실행프로그램이름> <인수1.c> <인수2.c> -lssl -lcrypto
-E를 붙여서 사용자의 환경변수를 가져오거나
루트의 환경변수를 바꿔야한다. 하지만 후자는 절대 추천 X !
왠만하면 루트 관련 내용들은 건들였다가 어떤일이 일어날지 모르기에 비추
이 오류 고치는데 거의 4시간은 쓴거 같다 ... ㅠㅠ