Обычно, когда я хочу make
и установить мой компилятор на uclibc
вместо gcc
, я могу просто сделать make CC=/path/to/uclibc
, так как make-файлы должны использовать эту переменную, или я могу использовать скрипт configure
.Пакет, который я сейчас создаю, не реализует CC
или не имеет сценария configure
, и хотя я пытался установить компилятор, я не могу заставить его работать, понимаете?Вот оригинальный файл сборки.
# Determination of the target system
target = $(shell uname)
sysdir = Lx
ifdef target
ifeq ("$(target)","QNX")
sysdir = Qx
endif
endif
M = for i in $(ALLDIRS); do make -C $$i/$(sysdir)
N = || exit 1; done
ifeq ("$(target)","QNX")
install:
cp CgosDump/$(sysdir)/cgosdump /usr/bin
cp CgosMon/$(sysdir)/cgosmon /usr/bin
cp CgosLib/$(sysdir)/libcgos.so /usr/lib
cp CgosDrv/$(sysdir)/cgosdrv /usr/lib
cp CgosTest/$(sysdir)/cgostest /usr/lib
else
default:
$(M) $(N)
install:
install -m 755 -o root -g root CgosDump/$(sysdir)/cgosdump /usr/bin
install -m 755 -o root -g root CgosMon/$(sysdir)/cgosmon /usr/bin
install -m 755 -o root -g root CgosTest/$(sysdir)/cgostest /usr/bin
install -m 755 -o root -g root CgosLib/$(sysdir)/libcgos.so /usr/lib
install -m 644 -o root -g root CgosDrv/$(sysdir)/cgosdrv.ko /lib/modules/`uname -r`/kernel/drivers/misc
depmod -a
# copy the udev rules to /lib/udev/rules.d - but only if the file does not already exist
@if ! [ -e /lib/udev/rules.d/99-cgos.rules ]; \
then \
cp 99-cgos.rules /lib/udev/rules.d/99-cgos.rules; \
echo "Copied CGOS udev rule to /lib/udev/rules.d."; \
fi
# copy the configuration file for module insertion at startup to /usr/lib/modules-load.d - but only if the file does not already exist
@if ! [ -e /usr/lib/modules-load.d/cgos.conf ]; \
then \
cp cgos.conf /usr/lib/modules-load.d/cgos.conf; \
echo "Added cgos.conf to /usr/lib/modules-load.d for cgosdrv module insertion at system startup."; \
fi
clean:
$(M) $@ $(N)
endif
. / CgosLib / Lx / Makefile:
PROJECT_INC = -I. -I.. -I../.. -I../../CgosLib
PROJECT_LIB =
C_source = LibOsaLx.c ../LibOsaM.c
C_source_p = ../Cgos.c
DEF = -DUNIX
OPT = -Wall -fPIC
default: $(C_source) libcgosp.o
gcc -shared -o libcgos.so $(OPT) $(DEF) $(PROJECT_INC) $(C_source) libcgosp.o
libcgosp.o:
gcc -Wl,-r -no-pie -nostdlib -o libcgosp.o $(OPT) $(DEF) $(PROJECT_INC) $(C_source_p)
clean:
rm -f *.so *.o
. / CgosDrv / Lx / Makefile:
# Kernel-Makefile for building cgos for kernel version 2.6.x, 3.x and 4.x
#
# by default, the kernel source is assumed to be in
# /lib/modules/`uname -r`/build
# ATTENTION: use the install option with care: it`s assumed that the
# driver was build for the currently running kernel.
KERNELDIR ?= /lib/modules/`uname -r`/build
CONFIG_CGOS ?= m
C_source = DrvLx.c DrvOsaLx.c ../CgosDrv.c ../Cgeb.c
make26_pre16 = $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
make26 = $(MAKE) -C $(KERNELDIR) M=$(PWD)
sublevel = $(shell sed -n s/SUBLEVEL\ =\ *//p $(KERNELDIR)/Makefile)
patchlevel = $(shell sed -n s/PATCHLEVEL\ =\ *//p $(KERNELDIR)/Makefile)
mkcmd = $(shell if [ "$(version)" -lt 3 && "$(patchlevel)" == 6 && "$(sublevel)" -lt 16 ]; then echo $(make26_pre16); \
else echo $(make26); fi; )
ifdef KERNELRELEASE
EXTRA_CFLAGS += -I$(obj)/. -I$(obj)/.. -I$(obj)/../../CgosLib
EXTRA_CFLAGS += -I$(obj)/../../CgosLib/Lx
# EXTRA_CFLAGS += -O2 -mcmodel=kernel -DAMD64 -fno-strict-aliasing
# EXTRA_CFLAGS += -O2 -DAMD64 -fno-strict-aliasing
EXTRA_CFLAGS += -O2 -fno-strict-aliasing
EXTRA_CFLAGS += -I$(obj)/../..
obj-$(CONFIG_CGOS) += cgosdrv.o
cgosdrv-objs := DrvLx.o DrvOsaLx.o ../Cgeb.o ../CgosDrv.o
clean-files := *.o
else
PWD := $(shell pwd)
obj := $(PWD)
DEF = -DUNIX -D__KERNEL__ -Dlinux -DMODULE
EXTRA_CFLAGS = $(DEF) -O2 -Wall -Wl,-r -nostdlib
EXTRA_CFLAGS += -I. -I.. -I../.. -I$(KERNELDIR)/include -I../../CgosLib
# EXTRA_CFLAGS += -mcmodel=kernel -DAMD64 -fno-strict-aliasing
# EXTRA_CFLAGS += -DAMD64 -fno-strict-aliasing
EXTRA_CFLAGS += -fno-strict-aliasing
default:
$(call mkcmd)
emu:
gcc -o cgosdrv.o -D CGEBEMU $(EXTRA_CFLAGS) $(C_source) ../CgebEmu.c
endif
clean:
rm -rf *~ *.ko *.mod.* .*.cmd .tmp* .*.tmp* .*.mk .*Drv*.o cgosdrv.o
rm -rf DrvLx.o DrvOsaLx.o built-in.o
rm -rf .*.flags
rm -rf Module.symvers modules.order
rm -rf ../*.o* ../.*.o*
install:
install -m 644 -o root -g root cgosdrv.ko /lib/modules/`uname -r`/kernel/drivers/misc
./ CgosMon / Lx / Makefile
PROJECT_INC = -I. -I.. -I../.. -I../../CgosLib
PROJECT_LIB = -lcgos -L../../CgosLib/Lx
C_source = ../CgosMon.c
OPT = -Wall
default:
gcc $(C_source) -o cgosmon $(OPT) $(DEF) $(PROJECT_INC) $(PROJECT_LIB)
clean:
rm -f cgosmon
cleanall: clean
buildmaster@x86build:~/cgoslx-x64-1.03.029$
buildmaster@x86build:~/cgoslx-x64-1.03.029$ cat ./CgosMon/Lx/Makefile
PROJECT_INC = -I. -I.. -I../.. -I../../CgosLib
PROJECT_LIB = -lcgos -L../../CgosLib/Lx
C_source = ../CgosMon.c
OPT = -Wall
default:
gcc $(C_source) -o cgosmon $(OPT) $(DEF) $(PROJECT_INC) $(PROJECT_LIB)
clean:
rm -f cgosmon
cleanall: clean
. / CgosMon / Lx / Makefile:
PROJECT_INC = -I. -I.. -I../.. -I../../CgosLib
PROJECT_LIB = -lcgos -L../../CgosLib/Lx
C_source = ../CgosMon.c
OPT = -Wall
default:
gcc $(C_source) -o cgosmon $(OPT) $(DEF) $(PROJECT_INC) $(PROJECT_LIB)
clean:
rm -f cgosmon
cleanall: clean
buildmaster@x86build:~/cgoslx-x64-1.03.029$ cat
^C
buildmaster@x86build:~/cgoslx-x64-1.03.029$ cat ./CgosDump/Lx/Makefile
PROJECT_INC = -I. -I.. -I../.. -I../../CgosLib
PROJECT_LIB = -lcgos -L../../CgosLib/Lx
C_source = ../CgosDump.c
OPT = -Wall
default:
gcc $(C_source) -o cgosdump $(OPT) $(DEF) $(PROJECT_INC) $(PROJECT_LIB)
clean:
rm -f cgosdump
cleanall: clean
. / CgosTest / Lx / Makefile:
PROJECT_INC = -I. -I.. -I../.. -I../../CgosLib
PROJECT_LIB = -lcgos -L../../CgosLib/Lx
C_source = ../cgostest.c ../generic.c
OPT = -Wall
default:
gcc $(C_source) -o cgostest $(OPT) $(DEF) $(PROJECT_INC) $(PROJECT_LIB)
clean:
rm -f cgostest
cleanall: clean
EDIT: кажется, что это было жестко закодировано в подкаталогах, я могу изменить это на мой путь к компилятору.