x86 아키텍처 용으로 작은 32 비트 커널에서 작업 할 때 ld이 nobits 섹션을 처리하는 방식이 이상합니다. 제 커널에서는 시스템의 초기화 부분에 대한 임시 스택을 보유하는 .bootstrap_stack 섹션을 정의합니다. 나는 또한 스택의 시작과 끝을 나타내는 심볼을 가지고있다. 이 입력 섹션은 .bss 출력 섹션으로 리디렉션됩니다. 커널의 각 출
공유 라이브러리에 main() 실행 파일 생성 루틴 (handler() 루틴 만 제공)을 포함하는 라이브러리를 어떻게 제공합니까? [email protected]:/media/Workspace/eclipse/libMain$ cat Makefile
main.so: main.cpp
gcc -shared -o main.so -fPIC main.cpp
linux (우분투처럼)에서 bash.bashrc 파일에 LIBRARY_PATH 및 LD_LIBRARY_PATH를 설정했습니다. 그러나 ld 명령은 해당 경로를 검색하지 않는 것으로 보입니다. '$ ld -l --verbose' 을 실행하고 /etc/ld.so.conf.d/*.conf에 정의 된 기본 경로 만 검색합니다. 왜 이런 일이 일어 났습니까? 컴파
출력 형식을 i386으로 지정하면 실행 결과 SIGSEGV가됩니다. 그러나 -m elf_i386 옵션을 사용하면 효과적입니다. 맨 페이지를 확인하면 OUTPUT_FORMAT이 -oformat 옵션과 동일하기 때문에이 두 가지가 다릅니다. 그래서 두 경우의 차이점은 무엇이며 어느 경우에 사용해야합니까? 예제 코드 : 파일 hello.c : int a = 1;
두 개의 RAM 뱅크 à 64kB가있는 ARM Cortex-M 마이크로 컨트롤러에서 응용 프로그램을 개발 중입니다. 첫 번째 뱅크 바로 다음에 메모리 맵의 두 번째 뱅크가옵니다. 메모리 뱅크는 현재 링커 스크립트에서 두 영역으로 나뉩니다. 첫 번째 영역에는 .bss 및 .data 섹션이 있습니다. 두 번째 뱅크는 .heap과 .stack으로 사용되며, 각
이 자습서는 다음과 같습니다. https://littleosbook.github.io/#linking-the-kernel 저는 Mac에 있습니다. 나는 오브젝트 파일이 nasm에서 생성 된 지점에 있으며, 이것을 ld을 사용하여 ELF 실행 파일로 바꾸고 싶습니다. Mac에서 ld은 ELF 형식을 지원하는 것처럼 보이지 않지만이 링크 단계를 수행하기 위해
안드로이드가 아닌 Linux 컴퓨터에서 apk에서 가져온 x86 공유 라이브러리를 실행하고 싶습니다. 안드로이드 libc와 연결되어 있으므로 안드로이드 ndk에서 libc.so을 움켜 잡았습니다.이 $ objdump -d libc.so | grep memalign -A 8
0000bf82 <memalign>:
bf82: 55 push
나는 최근에 내 페도라 기계에 SDL 프로그램을 실행하려고하고 난 다음 명령을 사용하여 내 프로그램을 컴파일 할 때 : gcc -o displayimg displayimg.c -lSDL
나는 다음과 같은 오류가 점점 오전 : /var/bin/ld: cannot find LSDL
collect2: error: ld returned 1 exit statu
컴퓨터에서 올바르게 컴파일되고 작동하는 프로그램이 있는데 다른 비슷한 컴퓨터에서 실행하려고합니다 : 같은 OS (Debian Stretch), 동일한 패키지가 설치되어 있음 , opencv와 같은 버전 (libopencv-dev 버전 : 2.4.9.1 + dfsg-2). 그러나, 제 컴퓨터에, LD는 OpenCV의 highgui 심볼 링크 실패 $ g++
템플릿 함수 ++은 C의 C 기호 별칭을 만듭니다 #define NATIVE(name,...) \
auto name (FULL_ARGS(__VA_ARGS__)) \
{ \
return (*mystruct.name ## _fn) (ARGS (__VA_ARGS__)); \
}
: int m