ฉันกำลังพยายามสร้างโปรเจค 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: เพียงเพื่อเคลียร์ข้อสงสัยของคุณในความคิดเห็น