2022/01 8

[C++] 언어의 철학

https://github.com/CppCon/CppCon2020/blob/main/Presentations/back_to_basics_the_abstract_machine/back_to_basics_the_abstract_machine__bob_steagall__cppcon_2020.pdf 1. abbstract machine - 프로그램이 실행 되는 환경에 대한 정의한 머신 - 프로그램의 복잡성은 낮추기 위해서 필요함. 2. C++목적 - 개발자가 모든 것을 control 하수 있어야 한다. - 현재 hardware환경 에대하서 지원해야 한다. 3. 컴파일러마다 결과가 다른이유 - 표준만 준수하고 나머지는 컴파일마다 다 다르기 때문이다.

ProgrammingLang/c++ 2022.01.25

[compile] compile 에러 별 대처 방안

undefined symbol 에러 원인 : 흔히 어떤 함수를 사용하려고 하는데, 실제 함수의 구현체가 없는 경우에 linking 하는 과정에서 발생하는 에러입니다. 해결 방안 : 라이브러리가 빠졌는지 확인 하면됨 undefined reference to 에러 원인: 컴파일 시, 헤더 파일에 선언은 되어있으나, 소스 파일에 정의가 안되어 있다는 의미입니다. 해결 방안 : 소스파일이 빠졌는지 확인 하면됨. https://nglee.github.io/2018/10/11/Study-Linker-Options.html

[compile] compile 에러 별 대처 방안

undefined symbol 에러 원인 : 흔히 어떤 함수를 사용하려고 하는데, 실제 함수의 구현체가 없는 경우에 linking 하는 과정에서 발생하는 에러입니다. 해결 방안 : 라이브러리가 빠졌는지 확인 하면됨 undefined reference to 에러 원인: 컴파일 시, 헤더 파일에 선언은 되어있으나, 소스 파일에 정의가 안되어 있다는 의미입니다. 해결 방안 : 소스파일이 빠졌는지 확인 하면됨.

[C++개발자되기]28. 파일 다루기 2부(확장자 검사)

개요 파일 관리에 필요한 sample code를 제공한다. 확장자 검사 1. rfind로 확장자 존재 유무를 찾는다. 2. substr로 찾은 확장자를 추출 후 뒤에서부터 일치하는 확인 한다. #include int main() { std::string file_name = "test.json"; std::string extension = ".json"; if (file_name.rfind(extension) != std::string::npos) { if (extension == file_name.substr(file_name.length() - extension.length())) { std::cout

ProgrammingLang/c++ 2022.01.19

[linux] libc와 glibc의 차이

개요 libc가 뭐고 glibc가 무엇인지 알아 봅니다. 결론 libc는 "표준 C 라이브러리"를 말하는 대 명사이고 glibc는 GNU에서 만든 libc 입니다. 그래서 https://man7.org/linux/man-pages/man7/libc.7.html 에서 보면 libc의 종류를 3가지의 분류 합니다. libc의 종류 glibc - pathname : /lib/libc.so.6 - 상세 설명 : 1992 이후로 linux에서 가장 많이 사용되는 libc linux libc - pathname : libc.so.5 - 상세 설명 : 1990년에 glibc의 대시 잠깐 나왔다 사라진 libc other C libraries - uClibc : 경량화 libc - dietlibc : 경량화 libc ..

[compile] 공부 해야 할 것

https://asung123456.tistory.com/18 Ubuntu C/C++ shared library 컴파일하기 fPIC 옵션 GOT, PLT c++ g++ -shared -fPIC -o g++ -shared fPIC -o lib.so code.cpp c gcc -shared [-fPIC] -o gcc -shared [-fPIC] -o lib.so code.c -fPIC 생략가능 하지만 공유라이브러리를 만들 때는 -fPIC 옵션 사용을 권장합니.. asung123456.tistory.com https://www.lesstif.com/software-architect/shared-library-linker-loader-12943542.html 동적 라이브러리(shared library)와 Lin..

[systemd] systemd를 시용한 자가 업데이트 로직

[개요] linux상에서 프로그램 스스로 종료 시키고 재시작 하는 방법을 정리 합니다. [Flow] 1. Program A 내부에서 update를 수행 하는 스크립트를 실행 system("nohup update.sh fork 2>&1 > /dev/null &"); 을 system 명령어로 실행 2. "update script"는 system 명령어로 실행 되어 Prorgam A의 socket 정보 까지 모두 상속 받게 되었음으로 강제로 열려있는 fd를 종료 합니다. for fd in $(ls /proc/$$/fd/); do [ $fd -gt 2] && exec {fd}