ฉันกำลังพยายามสร้างโปรเจค Hello world สำหรับลินุกซ์ไดนามิกไลบรารี (ไฟล์. so) ดังนั้นฉันมีไฟล์ hello.c:
#include <stdio.h>
void hello()
{
printf("Hello world!\n");
}
ฉันจะสร้างไฟล์. so ที่ส่งออกhello()
โดยใช้ gcc จากบรรทัดคำสั่งได้อย่างไร
ฉันกำลังพยายามสร้างโปรเจค Hello world สำหรับลินุกซ์ไดนามิกไลบรารี (ไฟล์. so) ดังนั้นฉันมีไฟล์ hello.c:
#include <stdio.h>
void hello()
{
printf("Hello world!\n");
}
ฉันจะสร้างไฟล์. so ที่ส่งออกhello()
โดยใช้ gcc จากบรรทัดคำสั่งได้อย่างไร
คำตอบ:
ในการสร้าง-fPIC
ไลบรารี่ที่ใช้ร่วมกันคุณต้องรวบรวมรหัส C ของคุณด้วยธง (รหัสอิสระ)
gcc -c -fPIC hello.c -o hello.o
สิ่งนี้จะสร้างออบเจ็กต์ไฟล์ (.o) ตอนนี้คุณรับไปแล้วสร้างไฟล์. so:
gcc hello.o -shared -o libhello.so
แก้ไข : คำแนะนำจากความคิดเห็น:
คุณสามารถใช้ได้
gcc -shared -o libhello.so -fPIC hello.c
ที่จะทำในขั้นตอนเดียว - Jonathan Leffler
ฉันยังแนะนำให้เพิ่ม-Wall
เพื่อรับคำเตือนทั้งหมดและ-g
เพื่อรับข้อมูลการดีบักในgcc
คำสั่งของคุณ - Basile Starynkevitch
gcc -shared -o libhello.so -fPIC hello.c
จะทำในขั้นตอนเดียว
-Wall
เพื่อรับคำเตือนทั้งหมดและ-g
เพื่อรับข้อมูลการดีบักในgcc
คำสั่งของคุณ
.o
ไฟล์นั้นเป็นไฟล์วัตถุสำหรับไฟล์ต้นฉบับก่อนที่จะเชื่อมโยงเข้าด้วยกันเป็นไฟล์ปฏิบัติการขั้นสุดท้าย ดังนั้นเมื่อคุณเรียกใช้gcc -o abc.c abc.o
ไฟล์วัตถุจะถูกสร้างขึ้น ตอบคุณสามารถใช้abc.o
ไฟล์นี้เพื่อสร้าง.so
ไฟล์ได้ สำหรับการสร้างไฟล์จำนวนมากสิ่งที่คุณต้องมีคือรหัส c ที่ถูกต้องใน.c
ไฟล์ PS: เพียงเพื่อเคลียร์ข้อสงสัยของคุณในความคิดเห็น