# Linker

8개의 포스트
post-thumbnail

Linker command failed with exit code 1 (use -v to see invocation) 에러 해결법

해당 프로젝트의 Podfile을 켜서 해당 문구를 해당 문구로 변경하고 터미널을 켠 후 프로젝트 폴더로 이동 후 을 진행해주면 된다. 안된다면 Pods, Runner.xcworkspace, Podfile.lock 세 파일을 지운 후 pod install 을 실행해보자.

2023년 4월 25일
·
0개의 댓글
·
post-thumbnail

[링커오류] Visual Studio LINK fatal : LNK1104

현생에 지쳐 블로그 운영을 안하다가, 요즘 들어 수 많은 에러들을 접하기에 트러블 슈팅 카테고리를 황급히 만들어서 오류 해결 과정을 적기로 했다..! 바쁜 사람들은 해결 완료 부분부터 보면 될 것 같다. 다른 라이브러리을 찾을 수 없다는 문제도 해결 가능하니 꼭 보시길! 1. 🚨문제 발생 프로젝트 속성 프로젝트 속성 > 링커 > 입력 > 추가 종속성에 ws2_32.lib를 추가해줬음에도 `ws2_32.lib 파일을 열 수 없습니다.` ``

2022년 9월 28일
·
0개의 댓글
·
post-thumbnail

Library

앞으로 진행할 긇에서는, Library와 Framework에 대해서 알아볼 것이다. 첫번째 순서로는 Library이다. Library & Framework Screen Shot 2022-02-11 at 4 06 51 PM 일단 간단하게 Library와 Framework에 대한 차이를 알아보고 가자. Library: Linkable binary 다른 프로그램과 link하여 사용할 목적으로 미리 만들어둔 클래스, 함수의 집합 보통 소스코드로 컴파일된 목적 파일의 묶음 실행 가능한 코드만 가지고 있다. 새 프로젝트를 실행할 때, 22.04기준 Library를 클릭하면 만들 수 있다. Framework: Library + Resource

2022년 4월 4일
·
1개의 댓글
·

[포인터] 함수포인터 동작 원리

함수포인터의 작동원리를 이해하기 위해서는 컴파일의 과정을 먼저 이해해야 한다. 컴파일 과정 clang 컴파일러는 4가지 단계를 거쳐 소스코드를 실행파일로 만든다. "컴파일"은 넓은 의미에서 전 과정을 포괄하는 말이다. 하지만 좁은 의미의 컴파일은 전처리 다음단계인 translation unit을 assembly code로 바꾸는 과정이다. 전처리 단계 소스코드를 input으로 받아서 전처리기 지시문(include, define 등)을 처리한다. include(혹은 "파일명.h")에서 파일명.h에 해당하는 헤더파일안에 있는 소스코드를 전부 복사하고 헤더파일의 선언부분이 복붙된 파일이 만들어진다. 이렇게 나온 결과를 translation unit이라고 한다. .c 파일을 직접 include해서 사용도 가능하다. 컴파일 단계 translation unit을 input으로 받아서 object code와 1대1 대응되는 assembly

2022년 2월 21일
·
0개의 댓글
·
post-thumbnail

[WWDC17] Behind the Scenes of the Xcode Build Process

Xcode의 빌드 과정을 알아보겠습니다. 다룰 내용 빌드 과정의 구조 Xcode가 빌드 과정을 모델링하고 조직하기 위해 프로젝트 파일 정보를 사용하는 방법 컴파일러 영역 Clang과 Swift가 소스 코드를 오브젝트 파일로 빌드하는 방법 헤더와 모듈의 작동 방법 Swift 컴파일 모델이 기초적으로 C, C++, Objective-C와 다른 점 링커 심볼들이 작성된 소스코드와 어떻게 연관되어 있는지 링커가 컴파일러가 생성한 오브젝트 파일을 받아 애플리케이션 또는 프레임워크와 같이 최종적으로 실행가능하게 이어 붙이는 방법 PetWell이라는 샘플 앱을 사용하여 이 과정을 알아봅니다. 이 앱은 애완동물 사진을 보여주는 앱입니다. ![](https://image

2021년 10월 10일
·
0개의 댓글
·
post-thumbnail

프로그램 작성부터 실행까지의 과정(from Source Code to Executable Program)

결론부터 말하자면, 먼저 소스 코드를 이용해서 소스 파일을 만든다. 여기서 소스 코드란 인간이 이해할 수 있는 코드, 즉 언어이다. 그렇다면 이것을 컴퓨터에게 통역해줘야 한다. 이 과정은 해석 프로그램인 컴파일러 또는 인터프리터가 수행한다. 컴파일러와 인터프리터는 해석을 하지만 각각 다른 방식으로 한다. 컴파일러는 소스 파일을 처음부터 끝까지 다 읽은 후에 하나의 최적화된 번역을 내놓는다. 인터프리터는 한 줄씩 읽는다. 즉, 직독직해를 한다. 그래서 번역이 최적화 되어 있지는 않다. 이러한 번역방식의 차이로 인해 결과물의 최적화 정도가 차이가 나게 된다. 따라서 이 결과물을 실행하였을 때 최적화 정도가 높은 컴파일러된 파일이 더 빠르고, 인터프리터는 느린 것이다. 이렇게 해석 프로그램으로 인해

2021년 9월 6일
·
0개의 댓글
·
post-thumbnail

짤막한 Rust 생활기 { 정적 변수 drop에 대해서 }

안녕하세요 현재 프로그랩 언어 Rust를 주언어로 사용하고 있는 개발자입니다. Rust는 c언어의 단점을 보완하고자 나온 언어로 현재는 마이크로소프트나 구글에서도 여러 오픈소스 프로젝트를 내며 사랑받고 있는 언어입니다. 저 또한 Rust만의 특징과 사전 오류탐지와 같은 기능에 매료되어서 주언어로 계속 사용되고 있습니다. 어느 날 제가 개인 프로젝트를 진행하다가 이런 문제점이 발생했습니다. 저는 여기서 자연스럽게 HELLO가 프로그램 종료하면서 drop 함수를 실행하고 싶었습니다. 하지만 Rust는 static변수에 대해서는 drop함수를 수행하지 않는 문제점이 있었습니다. ManuallyDrop도 해보고 시도를 하였지만 결국 태생부터가 정적변수여서 그렇게 할수 없더라고요. 그렇게 고민하다가 나온 해결책이 ctor,dtor이었습니다. Ctor,Dtor ctor,dtor은 linker가 만들어주는 segment로 전자는 프로그램 시작시, 후자는 프로그램

2021년 7월 18일
·
1개의 댓글
·
post-thumbnail

빌드/컴파일 및 실행 과정

간략한 과정 Pre Processer가 전처리기로 코드를 수정한 뒤 헤더파일과 cpp를 묶어 기본 단위인 translation unit(번역유닛)를 생성한다. tu는 전처리를 거친 파일들로 구성된 컴파일의 기본 단위이다. (번역 단위 : 컴파일을 통해 하나의 목적 파일(object file)을 만드는 바탕이 되는 include한 파일들까지 포함한 소스 코드를 일컫는다.) ※ 번역 : 소스의 언어를 기계어로 옮기는 과정 Compiler가 translation unit을 언어의 명세를 이용하여 어셈블리 언어로 변환한다. (이 때는 운영체제나 라이브러리 등이 개입하지 않는 독립적인 상태다.) Assembiler가 어셈블리 언어를 가지고 이진 객체 파일(Binary Object File)을 만들어 운영체제 등에 종속된 형태가 된다. (운영체제에서 실행시키기 위해) 오브젝트 파일은 코드 섹션/데이터 섹션으로 나뉘어져 있다. 또한 소스 코

2020년 9월 30일
·
0개의 댓글
·