전체 글 260

리눅스 동적 정적 라이브러리

1.  동적 라이브러리   5.5.1  OCRAM protection 실행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부릅니다.즉, 정적 라이브러리는 컴파일 시간에 코드를 결정하기 때문에 소스가 변경되면 새로 컴파일 해야하지만, 동적 라이브러리의 경우 라이브리만 교체하는 것으로도 변경이 가능합니다.$ gcc -c -fPIC test.c$ gcc -c app.c fPIC옵션은 Position-Independent Code의 약자이며 test.o파일을 동적라이브러리로 사용하도록 컴파일 하는 옵션입니다.이렇게 컴파일된 오브젝트 파일을 .so파일로 묶으면 됩니다.$ gcc -shared -fPIC -o libtest.so test.o컴파일은 아래와 같이 하면 됩니다.$ gcc -o ..

Linux C/C++ shared library 컴파일하기 fPIC 옵션 GOT, PLT

Linux C/C++ shared library 컴파일하기   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 옵션 사용을 권장합니다.(컴파일 종류에 따라서 -fPIC는 필수 옵션입니다.) fPIC를 사용하지 않을경우 재배치 기법을 사용하게 되는데,간략하게, 라이브러리의 주소를 현재 사용하려는 프로세스 주소에서 접근가능하게 재배치 한다는 개념입니다.    공유 라이브러리의 단점 1. 여러 프로세스가 공유라이브러리를 공유하게되면 각 프로세스가 로드 ..

[c++] override, const_iterator, noexcept, constexpr 사용하기

들어가기 이번에는 C++11에서 override, const_iterator, noexcept, constexpr에 대해서 살펴보자. 작성자: ospace114@empal.com, http://ospace.tistory.com/ override 선언 C++11에서는 파생 클래스(derivered class)에서 기반 클래스(base class)의 가상 함수를 재정의(override)할 때에 함수에 override을 붙인다. 기존에는 잘못으로 인한 잠재적 오류 가능성이 있다. override을 사용해서 명시적으로 지정하여 조건에 맞지 않으면 에러가 발행하도록 한다. 실제 사용 예를 보자. class Base { public: virtual void mf1() const; virtual void mf2();..

Overloading, Override, 다형성

1 Overloading 정말 간단하면서도 다형성을 지원하는 방법이 오버로딩(Overloading)입니다. 프로그래밍에서 Overloading이란 메소드 함수명은 같은데 전달받는 파라미터 인자 값에 의해 호출되는 메소드가 다르게 하는 것입니다.   아래의 예시를 봅시다.숫자를 더하는 프로그램을 만드는데 2개의 숫자 덧셈뿐만 아니라 3개의 숫자 덧셈까지도 가능하게 하도록 하려 합니다.  [overloading 사용 안할 시]  그렇다면 우리는 덧셈을 하는 메소드를 호출하는데 2개 숫자일 때와 3개 숫자일 때, 경우에 따라 호출해주어야 합니다.하지만 이는 매우 불필요한 작업입니다. 매개변수로 전달되는 값의 개수(x , y , z or x. y)의 값에 의해 기능이 결정되고 메소드..

: : C++ 2024.04.17

귀무가설, 대립가설

귀무가설, 대립가설 귀무가설의 정의는 ‘모집단의 특징이 옳다고 제안하는 잠정적인 주장’이며, 대립가설은 이를 반대하는 주장이다. 좀 더 쉽게 풀이하자면, 귀무가설은 누구나 사실이라고 여기고 있는 것이고, 대립가설은 귀무가설을 반박하기 위한 가설로써 연구자의 분석목적이 된다. 대립가설은 양측대립가설과 단측대립가설이 있다. 단측대립가설은 독립변수와 결과변수와의 관련성을 검정할 때 그 방향이 미리 어느 한쪽으로 결정되어 있는 경우이다. 양측대립가설은 독립변수와 종속변수 간에 관련성 혹은 차이의 존재 여부에만 관심을 가지며, 그 방향은 따지지 않는 가설이다.

EMI / EMC, 그리고 전자기학

Intro "4파이 입실론제로분의 ~ 뮤원뮤투 ... " 시험기간에 바짝 외운 문제풀이로 전자기학 시험문제를 풀었던 2학년. 1학년 수학을 자신만만하게 풀어제끼고, 벡터는 내적과 외적만 알면 되는 줄 알았지만 .. 벡터와 엮인 전자기학은 공식만 외우고 대입하여 풀게된다. 그러고 만난 EMI / EMC, 완전히 Isolation 된 회로에서의 이상동작. 절연 파괴 (絶緣破壞, electrical breakdown) 완전히 분리된 회로에서 전자가 넘나들며 흐른다. 가스레인지에서 배터리만으로 공기중에 Arc가 발생하며, 하늘에서 천둥번개가 내려치는 것 처럼 공기(절연물질)를 넘어서 전기가 흐르는 것 처럼, PCB 회로기판에서도 절연 파괴가 일어날 수 있다. 후에 전자기학, 무선통신, 안테나공학, 정보통신공학 ..

E - E Architecture 2024.03.27

로지스틱 회귀분석(Logistic Regression)

0. Intro 로지스틱 회귀분석은 분류 분석에 속하는 분석으로, 종속 변수가 범주형인 경우 새로운 자료에 대한 분류 목적으로 사용한다. 1.1 분류 분석의 유형들 1) 신경망 모형 (Artificial Neural Network) 2) 의사결정나무 (Decision Tree) 3) 앙상블 모형 (Ensenble) 4) 규칙기반 (Rule-Based) 5) 사례기반 (Case-Based) 6) 인접 이웃 (Nearest NEighbor) 7) 베이즈 분류 (Bayesian) 8) 서포트 벡터 머신 (SVM, Support Vector Machine) 9) 유전자 알고리즘 등이 있다. 1. 로지스틱 회귀모형 (Logistic Regression) 반응변수가 범주형인 경우에 적용하는 모형이다. 선형회귀분석이..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (9) 이기종 자료구조, (10) 기계수준 프로그램에서 제어와 데이터의 결합

3.9 이기종 자료구조   C는 서로 다른 유형의 객체를 연결해서 자료형을 만드는 두 가지 방법을 제공한다.    (1) 구조체 : struct 키워드를 사용해서 선언, 다수의 객체를 하나의 단위로 연결    (2) 공용체 : union 키워드로 선언, 하나의 객체를 여러 개의 다른 자료형으로 참조될 수 있도록 함    3.9.1  구조체   C struct 선언은 서로 다른 유형의 객체들을 하나의 객체로 묶어주는 자료형을 생성한다. 하나의 구조체 내의 서로 다른 컴포넌트들은 이름을 이용해서 참조된다. 구조체의 구현은 구조체의 모든 컴포넌트들이 메모리의 연속된 영역에 저장되며, 구조체의 포인터가 첫 번째 바이트의 주소라는 점에서 배열과 유사하다. 컴파일러는 각 필드의 byte offset을 가리키는 각 ..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (6) 제어문

3.6  제어문   3.6.1  조건코드   앞서 보았듯, CPU에는 정수 레지스터와 함께 가장 최근의 산술 또는 논리연산의 특성을 설명하는 레지스터들을 운영한다.CF: 캐리플래그(carry flag). 가장 최근의 연산에서 가장 중요한 비트로부터 올림이 발생한 것을 표시→비부호형 연산에서 오버플로우를 검출ZF: 영플래그 (Zero flag). 가장 최근 연산의 결과가 0인것을 표시SF: 부호 플래그 (Sign flag). 가장 최근 연산이 음수를 생성한것을 표시OF: 오버플로우 플래그 (Overflow flag). 가장 최근 연산이 2의 보수 오버플로우를 발생시킨 것을 표시→ 부호형 연산에서 오버플로우를 검출​​다른 레지스터들은 변경시키지 않으면서 조건 코드만 변경해 주는 두 개의 인스트럭션이 있다. ..