Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

makepp_exizing - Trực tuyến trên đám mây

Chạy makepp_exosystem trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks qua Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh makepp_exosystem có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


makepp_exnking - Cách mở rộng makepp bằng Perl

MÔ TẢ


Makepp nội bộ đủ linh hoạt để bằng cách viết một chút mã Perl, bạn có thể
thêm chức năng hoặc thực hiện một số thao tác khác.

Tổng Quát ghi chú on viết Perl đến công việc với trang điểm
Mỗi makefile sống trong gói riêng của nó. Do đó, các định nghĩa trong một makefile không ảnh hưởng đến
định nghĩa trong một makefile khác. Một tập hợp các chức năng chung bao gồm tất cả các tiêu chuẩn
các chức năng thao tác văn bản được nhập vào gói khi nó được tạo.

Các biến Makefile được lưu trữ dưới dạng các đại lượng vô hướng Perl trong gói đó. (Có những ngoại lệ đối với
điều này: các biến tự động và giá trị mặc định của các biến như CC thực sự là
được triển khai dưới dạng các hàm không có đối số. Nhắm mục tiêu các vars cụ thể, vars dòng lệnh và
môi trường vars không được nhìn thấy theo cách này.) Vì vậy, bất kỳ mã Perl nào bạn viết đều có quyền truy cập vào tất cả
biến makefile. Các biến toàn cục được lưu trữ trong gói "Mpp :: global". Nhìn thấy
Biến Makefile để biết chi tiết.

Mỗi câu lệnh (ifperl / ifmakeperl, perl / makeperl, sub / makeub),
các hàm (perl / makeperl, map / makemap) và hành động quy tắc (perl / makeperl) cho
viết mã Perl trực tiếp trong makefile có hai cách. Đầu tiên là hoàn toàn
Perl bình thường, nghĩa là bạn phải sử dụng tiền tố "f_" như được giải thích trong phần tiếp theo, nếu
bạn muốn gọi các hàm makepp. Biến thể thứ hai đầu tiên chuyển câu lệnh qua
Mở rộng biến kiểu Make-style, nghĩa là bạn phải nhân đôi số "$" mà bạn muốn Perl nhìn thấy.

Xử lý kết thúc là đặc biệt vì dữ liệu makepp rất lớn (tùy thuộc vào hệ thống xây dựng của bạn)
các cấu trúc sẽ mất vài giây để thu gom rác bằng lối ra thông thường. Vì vậy, chúng tôi làm một
lối ra brute force. Trong quá trình chính, bạn vẫn có thể có các khối "KẾT THÚC" nhưng nếu bạn có
các xử lý tệp toàn cầu mà chúng có thể không bị xóa. Nhưng bạn nên sử dụng từ vựng hiện đại
xử lý tệp, được đóng đúng cách khi vượt ra ngoài phạm vi.

Trong mã Perl chạy trực tiếp dưới dạng hành động quy tắc hoặc thông qua lệnh bạn xác định, nó là
trái nghĩa. Các khối "END" sẽ không được chạy, nhưng các bộ xử lý tệp chung sẽ được xóa cho bạn. Các
"DESTROY" của các đối tượng toàn cục sẽ không bao giờ được chạy.

Thêm mới văn bản chức năng
Bạn có thể thêm một hàm mới vào danh mục của makepp bằng cách chỉ cần xác định một chương trình con Perl của
cùng tên nhưng có tiền tố là "f_". Ví dụ:

phụ f_myfunc {
$ đối số của tôi = & arg; # Đặt tên cho đối số.
của tôi (undef, $ mkfile, $ mkfile_line) = @_; # Đặt tên cho các đối số.

... làm gì đó ở đây

return $ return_value;
}

XYZ: = $ (hàm myfunc đối số func của tôi)

Nếu hàm của bạn không có đối số thì không cần làm gì cả. Nếu hàm của bạn có một
, như trong ví dụ trên, hãy sử dụng trình truy cập đơn giản & arg để lấy nó. nếu bạn
mong đợi nhiều đối số hơn, bạn cần trình truy cập phức tạp hơn "args" được mô tả bên dưới.

Các trình truy cập này xử lý ba tham số giống nhau sẽ được chuyển cho bất kỳ "f_" nào
hàm, cụ thể là các đối số của hàm, đối tượng makefile và bộ mô tả dòng cho
tin nhắn. Do đó, bạn có thể sử dụng biểu mẫu & arg hiệu quả trong trường hợp đầu tiên.

Trình truy cập & arg sẽ giải quyết những việc sau cho bạn: Nếu các đối số đã có
được mở rộng (ví dụ: tìm tên của hàm trong "$ (my $ (function) arg)", arg là
được truyền dưới dạng một chuỗi và vừa được trả về. Nếu đối số vẫn cần mở rộng, thì đây là
trường hợp thông thường, thay vào đó nó là một tham chiếu đến một chuỗi. Trình truy cập & arg mở rộng nó cho bạn,
mà nó cần đối tượng makefile làm tham số thứ 2 của nó.

Nếu bạn mong đợi nhiều đối số hơn, có thể là số biến, công việc được thực hiện bởi "args".
Trình truy cập này nhận 3 tham số giống như arg, cộng với các tham số bổ sung:

max: số lượng args (mặc định 2): cho ~ 0 (maxint) cho vô tận
min: số lượng args (mặc định là 0 nếu max là ~ 0, khác với max)
only_comma: không ăn gian xung quanh dấu phẩy, thông thường đối với không phải tên tệp

Tối đa là tối đa, nhưng ít nhất là dấu phẩy có trước khi mở rộng được sử dụng để phân chia
tranh luận. Một số ví dụ từ các hàm nội trang của makepp:

my ($ prefix, $ text) = args $ _ [0], $ _ [1], $ _ [2], 2, 2, 1; # addprefix
cho $ cond của tôi (args $ _ [0], undef, $ _ [2], ~ 0) ... # và hoặc
my @ args = args $ _ [0], $ _ [1], $ _ [2], ~ 0, 1, 1; # gọi
của tôi ($ bộ lọc, $ từ) = args $ _ [0], $ _ [1], $ _ [2]; # lọc

Hàm phải trả về một chuỗi vô hướng (không phải là một mảng) sau đó được chèn vào
văn bản tại điểm đó.

Nếu hàm của bạn gặp lỗi, nó sẽ chết bằng cách sử dụng câu lệnh Perl die thông thường.
Điều này sẽ bị mắc kẹt bởi makepp và một thông báo lỗi hiển thị tên tệp và dòng
số biểu thức gây ra lỗi sẽ được in ra.

Về cơ bản không có giới hạn về những gì chức năng có thể làm; bạn có thể truy cập tệp, chạy
lệnh shell, v.v.

Hiện tại, các biểu thức xuất hiện trong các phần phụ thuộc và trong các hành động quy tắc được mở rộng
một khi các biểu thức xuất hiện trong mục tiêu được mở rộng hai lần, vì vậy hãy cẩn thận nếu
chức năng có tác dụng phụ và có trong một biểu thức cho một mục tiêu.

Lưu ý rằng môi trường (cụ thể là cwd) trong đó hàm đánh giá sẽ
không nhất thiết phải phù hợp với môi trường trong đó các quy tắc từ Makefile trong đó
chức năng đã được đánh giá được thực thi. Nếu đây là vấn đề đối với bạn, thì chức năng của bạn
có lẽ nên trông giống như thế này:

phụ f_foo {
hữu ích. Cảm ơn !
chdir $ makefile -> {CWD};

... Vân vân.
}

Đặt chức năng trong a Perl mô-đun
Nếu bạn đặt các chức năng vào một tệp bao gồm, bạn sẽ có một bản sao cho mỗi tệp Makepp.
sử dụng nó. Để tránh điều đó, bạn có thể viết chúng dưới dạng mô-đun Perl bình thường với "Trình xuất"
và sử dụng giao diện đó. Điều này sẽ tải nhanh hơn và tiết kiệm bộ nhớ:

perl {sử dụng mymodule}
perl {
sử dụng mô-đun :: của tôi; # put: trên một dòng mới để điều này không được phân tích cú pháp như một quy tắc
}

Nếu bạn cần bất kỳ chức năng nào thường có sẵn trong Makefile (như "f_"
hàm, "arg" hoặc "args"), bạn phải đặt dòng này vào mô-đun của mình:

sử dụng Mpp :: Đăng ký;

Hạn chế là mô-đun sẽ nằm trong một gói khác với một chức năng trực tiếp
xuất hiện trong một tệp makefile. Vì vậy, bạn cần chuyển mọi thứ dưới dạng tham số hoặc cấu trúc
tên với chức năng "người gọi" của Perl.

đang gọi ngoài Perl kịch bản
Nếu bạn gọi một tập lệnh Perl bên ngoài thông qua "hệ thống" hoặc dưới dạng một hành động quy tắc, makepp sẽ phân nhánh một
quy trình mới (trừ khi đó là hành động quy tắc cuối cùng) và kích hoạt trình thông dịch perl hoàn toàn mới.
Không có gì sai với điều đó, ngoại trừ việc có một cách hiệu quả hơn:

&lệnh tranh luận...
Đây có thể là một hành động quy tắc. Nó sẽ gọi một hàm lệnh với tiền tố "c_" và
chuyển nó phần còn lại (kiểu makepp được trích dẫn tùy chọn - không giống hoàn toàn với
Shell) các đối số. Nếu một hàm như vậy không thể được tìm thấy, nó sẽ chuyển tất cả các chuỗi tới
"chạy".

sub c_mycmd {my @args = @_; ...}

$ (callcmd rởm):
& mycmd 'arg with space' arg2 "arg3" # gọi c_mycmd

% .out:% .in
& myscript -o $ (output) $ (input) # gọi myscript bên ngoài

Bạn có thể viết các lệnh của mình trong khuôn khổ của nội trang, cho phép bạn sử dụng
các tùy chọn tiêu chuẩn tương tự như họ có và xử lý I / O mà họ đưa ra.

Toán tử khối "Mpp :: Cmds :: frame" được theo sau bởi một danh sách tùy chọn ký tự đơn của
nội trang (tối đa là "qw (fi I ​​o O rs)"). Ngay cả khi bạn chỉ định tùy chọn của riêng mình
ghi đè một trong những tùy chọn này, bạn vẫn đưa ra ký tự duy nhất của tùy chọn tiêu chuẩn.

Mỗi tùy chọn riêng được chỉ định là "[qw (n tên), \ $ ref, tranh luận, phụ] ". Hai đầu tiên
các phần tử là tên ngắn và dài, theo sau là tham chiếu biến và tùy chọn bởi
boolean để biết có tham gia đối số hay không. Không có đối số, biến là
tăng lên mỗi khi tùy chọn được đưa ra, nếu không giá trị tùy chọn được lưu trữ trong đó.

sub c_my_ocmd {# Trường hợp đầu ra điển hình
địa phương @ARGV = @_;
Mpp :: Cmds :: khung {

... in nội dung nào đó ở đây với @ARGV, với các tùy chọn đã tự động bị xóa

} 'f', qw (o O);
}

sub c_my_icmd {# Kiểu nhập điển hình với 2 tùy chọn
địa phương @ARGV = @_;
của tôi ($ ngắn, $ dài);
Mpp :: Cmds :: khung {

... làm gì đó ở đây với <>

} qw (i I rs), # s chỉ xác định - dấu phân tách, không phải -s
[qw (s short), \ $ short], # No option arg -> $ short == 1
[qw (l long), \ $ long, 1, sub {warning "got arg $ long"}];
}

Đây là một lệnh đơn giản chỉ giới thiệu ký tự đầu tiên của mỗi đầu vào
bản ghi (tương đương với "& sed '$$ _ =" \ u \ L $$ _ "'"):

phụ c_uc {
địa phương @ARGV = @_;
Mpp :: Cmds :: khung {
print "\ u \ L $ _" while <>;
} 'f', qw (i I o O rs);
}

Trong khối được xử lý bởi khung, bạn có thể có các khối lồng nhau để thực hiện
như mở các tệp khác.

Mpp :: Cmds :: performance {...} 'message';

Điều này sẽ xuất ra thông báo với "--verbose" (mà mọi lệnh đều chấp nhận)
lệnh được chạy thành công. Nhưng nếu khối được đánh giá là sai, nó sẽ chết với
thông báo phủ định.

chạy kịch bản tranh luận...
Đây là một hàm Perl bình thường mà bạn có thể sử dụng trong bất kỳ ngữ cảnh Perl nào trong tệp trang của bạn.
Nó tương tự như dạng đa đối số của hệ thống, nhưng nó chạy tập lệnh Perl bên trong
quy trình hiện tại. Đối với câu lệnh makepp, hàm perl hoặc các hàm của riêng bạn
đó là quá trình chạy makepp. Nhưng đối với một quy tắc là quy trình con thực hiện
nó. Tập lệnh được phân tích cú pháp nhiều lần khi nó được gọi, nhưng bạn có thể đặt
hoạt động thành lib, như pod2html. Lib này sau đó có thể được sử dụng ở cấp cao nhất, vì vậy
rằng nó đã có mặt:

perl {use mylib} # được chia nhỏ cho tất cả các quy tắc không cần phân tích lại nó

% .out:% .in
makeperl {run qw'myscript -o $ (output) $ (input) '}

Nếu tập lệnh gọi "thoát", đóng bộ mô tả tệp tiêu chuẩn hoặc dựa vào hệ thống
để dọn dẹp sau nó (mở tệp, bộ nhớ ...), đây có thể là một vấn đề với "run". Nếu như
bạn gọi "run" trong các câu lệnh hoặc hàm perl, makepp có thể bị làm phiền hoặc
dọn dẹp chỉ xảy ra ở cuối makepp.

Nếu bạn gặp một trong những vấn đề đã đề cập ở trên, hãy chạy tập lệnh bên ngoài, tức là từ
dòng lệnh thay thế. Trong một quy tắc, dọn dẹp ít vấn đề hơn, đặc biệt là không
là hành động cuối cùng của quy tắc, vì quy trình con của quy tắc sẽ thoát ra sau đó,
ngoại trừ trên Windows.

Writing qua một vài thao tác đơn giản về riêng chữ ký phương pháp
Đôi khi bạn muốn makepp tính toán một phương pháp chữ ký bằng một kỹ thuật khác. Vì
ví dụ, giả sử bạn có một tệp nhị phân phụ thuộc vào một thư viện được chia sẻ. Thông thường, nếu bạn
thay đổi thư viện được chia sẻ, bạn không phải liên kết lại các tệp thi hành phụ thuộc vào nó vì
liên kết được thực hiện tại thời điểm chạy. (Tuy nhiên, có thể liên kết lại tệp thực thi
có thể cần thiết, đó là lý do tại sao tôi không đặt điều này làm mặc định.) Những gì bạn muốn makepp
cần làm là có cùng một chữ ký cho thư viện được chia sẻ ngay cả khi nó thay đổi.

Điều này có thể được thực hiện bằng một số cách. Cách dễ nhất là tạo mới của riêng bạn
phương thức chữ ký (chúng ta hãy gọi nó là "shared_object"). Bạn sẽ sử dụng phương pháp chữ ký này
chỉ dựa trên các quy tắc liên kết các tệp nhị phân, như thế này:

myprogram: * .o lib1 / lib1.so lib2 / lib2.so
: chữ ký shared_object
$ (CC) $ (đầu vào) -o $ (đầu ra)

Bây giờ chúng ta phải tạo phương thức chữ ký.

Tất cả các phương thức chữ ký phải là lớp riêng của chúng và lớp phải chứa một vài
các mặt hàng (xem Mpp / Signature.pm trong bản phân phối để biết thêm chi tiết). Tên của lớp phải là
tiền tố là "Mpp :: Signature ::", vì vậy trong trường hợp này, lớp của chúng ta nên được gọi là
"Mpp :: Chữ ký :: shared_object". Chúng tôi phải tạo một tệp có tên là chia sẻ_object.pm và đặt
nó thành một Mpp :: Chữ ký thư mục ở đâu đó trong đường dẫn Perl bao gồm; nơi dễ dàng nhất
có thể ở trong Mpp / Chữ ký thư mục trong cài đặt makepp (ví dụ:
/ usr / local / share / makepp / Mpp / Signature hoặc bất cứ nơi nào bạn đã cài đặt nó).

Để biết chi tiết chính xác về những gì phải trải qua trong lớp học này, bạn nên xem kỹ
các tập tin Mpp / Signature.pm và có lẽ cũng Mpp / Chữ ký / chính xác_match.pm trong makepp
phân bổ. Nhưng trong trường hợp của chúng tôi, tất cả những gì chúng tôi muốn làm là thực hiện một thay đổi rất nhỏ đối với
cơ chế chữ ký hiện có; nếu tệp là một thư viện được chia sẻ, chúng tôi muốn có một
chữ ký, trong khi nếu tệp là bất kỳ thứ gì khác, chúng tôi muốn dựa trên thông thường của makepp
cơ chế chữ ký. Cách tốt nhất để làm điều này là kế thừa từ
"Mpp :: Signature :: c_compilation_md5", là phương thức chữ ký thường được chọn
khi makepp nhận ra một lệnh liên kết.

Vì vậy, tập tin Mpp / Signature / shared_object.pm có thể chứa những thứ sau:

Sử dụng nghiêm ngặt;
gói Mpp :: Chữ ký :: shared_object;
sử dụng Mpp :: Signature :: c_compilation_md5;
@ISA của chúng tôi = qw (Mpp :: Chữ ký :: c_compilation_md5); # Cho biết tính kế thừa.
$ shared_object = phước lành \ @ISA; # Một phép thuật giúp makepp tìm thấy
# các chương trình con cho phương thức này. Tất cả các
# phương thức chữ ký phải có một trong những phương thức này.
# Giá trị không được sử dụng, chỉ bất kỳ đối tượng nào.
# Bây giờ đây là phương thức được gọi khi chúng ta cần chữ ký của
# bất kỳ mục tiêu hoặc phụ thuộc nào mà phương thức chữ ký này đang hoạt động:
chữ ký phụ {
của tôi ($ self, # Điều này sẽ giống với $ shared_object.
$ finfo) = @_; # Một cấu trúc đặc biệt chứa mọi thứ
# makepp biết về tệp này. Nhìn thấy
# Mpp / File.pm để biết chi tiết.

if ($ finfo -> {NAME} = ~ /\.s[oa]$/) {# Tên tệp có kết thúc bằng .so hay .sa?
trả về $ finfo-> file_exists? 'tồn tại': '';
# Luôn trả lại cùng một chữ ký nếu tệp
# tồn tại. Trong trường hợp này, chữ ký là
# chuỗi "tồn tại".
}

Mpp :: Chữ ký :: c_compilation_md5 :: chữ ký;
# Nếu tệp không kết thúc bằng .so hoặc .sa,
# ủy quyền cho phương thức chữ ký thông thường của makepp.
}

Tệp này được cung cấp làm ví dụ trong bản phân phối makepp, với một số bổ sung
ý kiến.

Ngẫu nhiên, tại sao chúng ta không đặt điều này làm mặc định? Vâng, đôi khi thay đổi một
thư viện được chia sẻ sẽ yêu cầu liên kết lại chương trình của bạn. Nếu bạn thay đổi một trong hai
các ký hiệu mà một thư viện dùng chung xác định hoặc các ký hiệu mà nó phụ thuộc vào các thư viện khác
vì, một liên kết lại đôi khi có thể cần thiết.

Ví dụ, giả sử rằng thư viện được chia sẻ gọi một số chương trình con mà chương trình của bạn
cung cấp. Ví dụ: giả sử bạn thay đổi thư viện được chia sẻ để bây giờ nó gọi là bên ngoài
chương trình con "xyz ()". Trừ khi bạn sử dụng tùy chọn "-E" hoặc "--export-dynamic" cho trình liên kết
(đối với binutils GNU; các trình liên kết khác có tên tùy chọn khác nhau), ký hiệu "xyz ()" có thể không
có thể truy cập vào trình liên kết thời gian chạy ngay cả khi nó tồn tại trong chương trình của bạn.

Thậm chí tệ hơn, giả sử bạn đã xác định "xyz ()" trong một thư viện khác (gọi nó là libxyz), như thế này:

my_program: main.o lib1 / lib1.so xyz / libxyz.a

Vì "libxyz" là một .a tệp và không phải là .vì thế tệp, sau đó "xyz ()" có thể không được kéo vào
chính xác từ libxyz.a trừ khi bạn liên kết lại tệp nhị phân của mình.

Các phương thức Mpp :: Signature cũng không chỉ kiểm soát chuỗi được sử dụng để xác định xem
tệp đã thay đổi, nhưng thuật toán được sử dụng để so sánh các chuỗi. Ví dụ,
phương thức chữ ký "target_newer" trong phân phối makepp chỉ yêu cầu rằng
các mục tiêu mới hơn các phần phụ thuộc, trong khi phương thức chữ ký "chính xác_match" (và
mọi thứ phụ thuộc vào nó, chẳng hạn như "md5" và "c_compilation_md5") yêu cầu
tệp có chữ ký giống như trên bản dựng cuối cùng.

Dưới đây là một số loại phương pháp chữ ký khác có thể hữu ích, để giúp bạn nhận ra
các khả năng. Nếu đủ mục đích chung, một số trong số này cuối cùng có thể
được kết hợp vào makepp:

· Một phương pháp chữ ký cho các thư viện được chia sẻ trả về tổng kiểm tra của tất cả các tệp đã xuất
các biểu tượng, và tất cả các biểu tượng mà nó cần từ các thư viện khác. Điều này giải quyết
vấn đề với ví dụ trên và đảm bảo một liên kết chính xác trong mọi trường hợp.
Một nỗ lực thử nghiệm đã được thực hiện để làm điều này trong phân phối makepp (xem
Mpp / Signature / shared_object.pm), nhưng nó sẽ chỉ hoạt động với GNU binutils và ELF
thư viện tại thời điểm này.

· Phương thức chữ ký bỏ qua dấu ngày tháng được ghi vào tệp. Ví dụ, nếu bạn
tạo ra một .c tệp tự động bằng cách sử dụng một số chương trình yêu cầu đặt một chuỗi
như thế này:

static char * date_stamp = "Được tạo tự động vào ngày 01 tháng 2004 năm XNUMX bởi không ai";

bạn có thể viết một phương pháp chữ ký mà cụ thể là bỏ qua những thay đổi trong dấu ngày tháng.
Vì vậy, nếu tem ngày là thứ duy nhất đã thay đổi, makepp sẽ không xây dựng lại.

· Một phương thức chữ ký tính toán các chữ ký theo cách bình thường, nhưng bỏ qua
sự phụ thuộc của kiến ​​trúc khi quyết định có xây dựng lại hay không. Điều này có thể hữu ích cho
các tệp thực sự độc lập với kiến ​​trúc; hiện tại nếu bạn xây dựng trên một kiến ​​trúc,
makepp sẽ nhấn mạnh vào việc xây dựng lại các tệp không phụ thuộc vào kiến ​​trúc khi bạn chuyển đổi
sang một kiến ​​trúc khác.

· Một phương pháp chữ ký biết cách bỏ qua các nhận xét trong các tệp latex, như
Phương thức "c_compilation_md5" biết cách bỏ qua các nhận xét trong tệp C.

· Một phương pháp chữ ký để trích xuất tài liệu tự động chỉ kiểm tra tổng cho
nhận xét mà trình trích xuất tài liệu cần và bỏ qua các thay đổi khác đối với nguồn
tập tin.

Chưa xong
Tài liệu này vẫn chưa hoàn thành. Nó sẽ bao gồm cách viết máy quét của riêng bạn cho
bao gồm các tệp và những thứ tương tự.

Sử dụng makepp_exosystem trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

  • 1
    Chân đế
    Chân đế
    Chân đế là một mã nguồn mở hiện đại, miễn phí
    trình soạn thảo văn bản được tạo đặc biệt cho Web
    Phát triển. Được viết bằng HTML, CSS và
    JavaScript với các công cụ trực quan tập trung và
    chuẩn bị...
    Tải xuống dấu ngoặc
  • 2
    Trình biên dịch Pascal miễn phí
    Trình biên dịch Pascal miễn phí
    Trình biên dịch Pascal 32/64/16-bit dành cho
    Win32/64/CE, Linux, Mac OS X/iOS,
    Android, FreeBSD, OS/2, Game Boy
    Nâng cao, Nintendo NDS và DOS;
    tương thích ngữ nghĩa với...
    Tải xuống Trình biên dịch Pascal miễn phí
  • 3
    Thông tin kỹ thuật số Canon EOS
    Thông tin kỹ thuật số Canon EOS
    Canon không có số lượng màn trập
    có trong thông tin EXIF ​​của một
    tệp hình ảnh, trái ngược với Nikon và
    ống nhòm. Không có cơ sở chính thức nào của Canon
    ứng dụng ...
    Tải xuống thông tin Canon EOS DIGITAL
  • 4
    rEFInd
    rEFInd
    rEFInd là một nhánh của khởi động rEFIt
    người quản lý. Giống như rEFIt, rEFInd có thể
    tự động phát hiện khởi động EFI đã cài đặt của bạn
    trình tải và nó trình bày một giao diện đồ họa đẹp mắt
    menu tùy chọn khởi động ...
    Tải xuống rEFInd
  • 5
    Thể hiệnLuke GSI
    Thể hiệnLuke GSI
    Trang tải xuống SourceForge này là để
    cấp cho người dùng tải xuống nguồn của tôi được xây dựng
    GSI, dựa trên công trình vĩ đại của phhusson
    công việc. Tôi xây dựng cả Android Pie và
    Android 1 ...
    Tải xuống ExpressLuke GSI
  • 6
    Trình phát nhạc
    Trình phát nhạc
    Music Caster là một trình phát nhạc dạng khay
    cho phép bạn truyền nhạc địa phương của mình sang một
    Thiết bị Google Cast. Trong lần chạy đầu tiên,
    bạn sẽ cần phải nhấp vào mũi tên trong
    nhiệm vụ ...
    Tải xuống Music Caster
  • Khác »

Lệnh Linux

Ad