banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: panfider  XML
Profile for panfider Messages posted by panfider [ number of posts not being displayed on this page: 0 ]
 
tri thức của mình cũng không lớn, nên mình khó giải thích một số thứ
ví dụ như: cách hoạt động của hàm getenv, cho tới nay đó là một bí ẩn
nếu bạn cho đó làm "tào lao", thì mình cũng nói nếu không biết thì cũng không saosmilie! Vì đó là chuyện nhỏ nhưng mình chưa biết. Nếu bạn biết cái tào lao của mình thì cho mình thấy ánh sáng.
enum dùng để lấy tên thay cho số
Code:
Creates 4 variables. The value of joe is 0, mary is 1, bob is 2, and fran is 3.

nó không phải là variables, nó giống như macro
ví dụ:
Code:
#include <stdio.h>
enum CONSTANT{
CAT=1, DOG, BIRD
};
char *test(int animal){
switch(animal){
case CAT:return "cat";break;
case DOG: return "dog";break;
case BIRD: return "bird";break;
default: return "unknown";break;
}
}
int main(){
printf("%s\n",test(DOG));
return 0;
}
mình đã thử compile nhiều lần, gần như vài ngài liên tục biên dịch lại kernel phiên bản 32 và 35 nhưng cả 2 version này không cho thấy nó ổn định như mong muốn, mình muốn xài terminal linux nhưng cũng muốn xài X, nên 35 bị lỗi thật kì lạ

nếu thế thì mình cần DLKC chỉ mình cách tìm hiểu kernel

mình đang cần config Linux kernel cho bản từ 2.6.32 trở về sau chạy tốt
việc lập trình thì mình sẽ sớm trở lại sau, vì mình chán cái kernel Linux
không hiểu tại sao mình đang chạy X mà ra terminal thì màn hình bị fill đầy bởi con trỏ
hiện tượng không khắc phục này khiến mình chán
sorry, dạo này nghinh cứu vật lý, nên không có thời gian check cái này
quanta boot hai kernel version sau 30 nên không thấy hiệu quả chứ thằng gốc Debian kernel version chỉ có 2.6.26.x thôi.
nhưng kernel từ 32-> thì hỗ trợ gần như tốt hơn hẳn về driver, và tính năng mới
nên xài kernel 32 trở đi

Không biết dạo này mất hứng lập trình rùi sao ấy, gần như không còn muốn lập trình nữa hay tìm hiểu thêm smilie
mình nghĩa mình có cycle lập trình, nếu mất nhịp nào đó gần như không muốn lập trình nữa hoặc có viết thì cũng rất khó viết, ví dụ như bài code C trong mục *nix gần đây cho thấy khả năng suy nghĩa không sáng suốt nữa.
Việc tìm hiểu kernel hay trình biên dịch không có tiến triển vì mã kernel nhiều quá, nghiên cứu tốn nhiều thời gian bắt đầu mà không được gì smilie
Không biết ai có hứng thú gì với kernel hay lập trình, cần share để tăng thêm ý thức nghiên cứu lập trình.
Hãy nói cho mình nghe ý nghĩa lập trình, khoa học máy tính có ý nghĩa gì ? smilie
nhớ ghost Windows sau này khỏi cài, lỡ hư Win phục hồi mà vẫn không hư MBR
vậy không có cách nào phục hồi hả conmale
bạn test có in ra được list các lệnh không ?
vì mỗi item tương đương một con trỏ có kích thước sizeof(char *),
vì mình không muốn duyệt qua một thư mục nhiều lần nên mình buf một vùng nhớ cho 512 con trỏ,
nếu số item đang quét lớn hơn thì malloc mới, copy và free cũ,
Code:
/*phần include ở trên và code ở trên*/
/*
this is main
*/
int main(){
char **vpt=get_list_exec(0);
int r=0;
while(vpt[r]){
printf("%s ",vpt[r]);
}
}

hàm này rất có lợi, nếu nó chạy tốt smilie
nếu kết hợp với hàm which dưới đây
Code:
/*find cmd in path and return malloc string */
char *which(const char *word){
char **vpath=str2arword(getenv("PATH"),':');
char buf[266],*rpt=0;
size_t r=0;
while(vpath[r]){
strcpy(buf,vpath[r]);strcat(buf,"/");
strcat(buf,word);
if(access(buf,F_OK)==0) {
rpt=(char *)malloc(strlen(buf));
if(rpt) strcpy(rpt,buf);
return rpt;
}
r++;
}
free((void *)vpath);
return NULL;
}

hàm này chạy tốt, trả về đường dẫn của một lệnh Unix, giống lệnh which của *nix
ví dụ: char *lenh=which("ls"); thì trả về lenh "/bin/ls"
bạn nào kiểm ra giùm hàm get_list_exec
trả về con trỏ char ** danh sách các command nhưng không hiểu tại sao nó segment fault
Code:
#include <dirent.h>
#include <string.h>
#include <unistd.h>
#include <malloc.h>
/*
cut a string by sep character,
return a pointer of array string
*/
char **str2arword(const char *str,char sep){
if(str==NULL) return NULL;
char *path=str;
size_t len=strlen(path);
size_t frag=0,r=0,count=0,msize;
char **vpath;
/*first count how many*/
while(*path) if(*path++==sep) frag++;
vpath=(char **)malloc( (frag+2)*sizeof(char*)+len+1 );
path=str;
vpath[r]=vpath+frag+2;
while(*path){
*(vpath[r]+count++)=*path++;
if(*path==sep) {
*(vpath[r]+count)=NULL;
vpath[r+1]=vpath[r]+count+1;
count=0,path++,r++;
}
}
vpath[r+1]=NULL;
return vpath;
}
/*23:00
get a list of file exec in PATH environment variable
*/
char **get_list_exec(const char *epath){
#define MAX_NUMBER_POINTER 512
char *path = epath;
char **vcpt = 0;
size_t r=0,len=0,item=0,count=1;
char **vret=(char **)malloc(sizeof(char *)*MAX_NUMBER_POINTER);
struct dirent *dent;
DIR *dirp;
if(vret==NULL) return -1;
if(epath==NULL) path = getenv("PATH");
vcpt = str2arword(path,':');
/*in this loop I got the total len of all string and number of item*/
while(vcpt[r]){
dirp= opendir(vcpt[r]);
if(dirp==NULL) goto end_loop;
while( dent=readdir(dirp) ) {
if( (strcmp(dent->d_name,".")) && strcmp(dent->d_name,"..") )
if((dent->d_type==DT_REG)||(dent->d_type==DT_LNK)){
char buf[512]; /*form a canonical name*/
strcpy(buf,vcpt[r]);strcat(buf,dent->d_name);
if(! access(buf,X_OK))
{
size_t len1 = strlen(dent->d_name);
char *get = malloc(len1+1);
if(get==NULL) return -1;
strcpy(get,dent->d_name);
vret[item]=get;
len +=len1;
item++;
}
}
if(item>=MAX_NUMBER_POINTER){
count++;
void *tmp=malloc(sizeof(char *)*MAX_NUMBER_POINTER*count);
if(tmp==NULL) return -1;
memcpy(tmp,vret,sizeof(char *)*MAX_NUMBER_POINTER*(count-1));
free(vret);
vret=(char **)tmp;
}
}
closedir(dirp);
end_loop:;
r++;
}
/*when i go here len and item are reserve for make string*/
vret[item]=0;
return vret;
}
dùng đĩa cài đặt distro hoặc LiveCD, dùng grub-install để cài lại grub
có thể tham khảo manual của GRUB
cài window ở primary partition rùi cài Linux
Linux tự động cấu hình cho Window menu
mingw32
biên dịch cho 32 bit thôi
apt-get install mingw32
biên dịch ra file exe không biết có chạy được không ?
không biết chuơng trình nhỏ của bạn xài thư viện gì !
vì thư viện mingw đôi khi chạy không chính xác, hoặc không tốt lắm

Vậy bạn thử vào runlevel 3 trước, rồi startx, tiếp theo Ctrl + Alt + F1 xem hiện tượng gì xảy ra.
 

nó cũng bị fill đầy màn hình bằng một con trỏ,
egrep '\(WW\)|\(EE\)' /var/log/Xorg.0.log

(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
(WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
(WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
(WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
(WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
(WW) intel(0): Failed to allocate texture space.
(EE) intel(0): I830 Dma Initialization Failed
(WW) intel(0): PRB0_CTL (0x0001f001) indicates ring buffer enabled
(WW) intel(0): Existing errors found in hardware state.
(WW) Configured Mouse: No Device specified, looking for one...
 
mình biên dịch kernel 2.6.35.6 nhưng terminal nó bị vấn đề,
khi đang chạy X thì quay lại terminal bằng alt+F1, thì bị fill đầy màn hình bằng một kí tự
khi boot vào level 3 thì không bị vấn đề gì ?
nhưng vào X rùi ra terminal thì bị như cũ,
mình không có cách khắc phục, không biết quanta cố gặp trường hợp này hay chưa
còn kernel 2.6.32 thì khi biên dịch vào thì đen thui không thấy gì hết, màn hình bị đưa về trạng thái chờ không có tín hiệu
bạn nên xài thư viện chuẩn của C standard, và những gì liên quan đến hdh thì có libc
tất cả những hàm trên của bạn đều có thể thay thế được, bạn cố tìm nha !
cám ơn, mình sẽ phân tích
đúng là chỉ có một chuyện đơn giản mà không nghĩ ra
mình có kernel cũ cùng version vẫn boot được, nhưng biên dịch lại (config đã đưa), thì không boot được, do không mount được root fs
tại grub shell gõ: # kernel /boot/vmlinuz-2.6.35.6-rs3 root=/dev/sda1 quiet
--> kernel panic VFS unable mount root fs
Linux kernel 2.6.35.6 không boot được,
Kernel panic, VFS unable to mount root fs
http://piece-of-c.googlecode.com/files/config-2.6.35.6-rs3
đây là config mới nhất không boot được, quanta phân tích giùm
mình không biết chính xác được trong phần sata hay ata, nhưng bây giờ kernel mình biên dịch vẫn nhận ra ổ cứng và boot tốt,
chỉ có phần usb của 2.6.32.22 là không nhận ra ngay cả khi mình chọn MTD khá nhiều mục
còn kernel 2.6.35.6 thì nhận ra hết thì terminal bị fill đầy màn hình chỉ một kí tự (con trỏ ) (mình duyệt web trong X)
nếu bạn có cách khắc phục thì giúp mình với
có nghe nói về news group, nhưng không biết cách xài nó thế nào
bạn nào có xài qua nó rùi, mong share giùm smilie
nên đi vay ngân hàng thì nhanh hơn thuyết phục người khác,
một câu hỏi kĩ thuật thì dễ trả lời hơn câu hỏi chung chung, mang tính chất cần định hướng như bạn hỏi,
nếu bạn hỏi như vậy, thì mình không dám trả lời,
cái này nên hỏi các thầy, thầy có thể giúp bạn được định hướng
không nhận được USB disk là do thiếu phần MTD
còn không thấy ổ đĩa sata là do cả hai phần ,sata và ata đều thiếu cái gì đó, thêm chút vào là xong
mà kernel của mình cũng không cần initrd.img mà boot thẳng, khá nhanh, ít text khi boot
chắc do kernel mới, hình như càng mới càng nhanh

quanta có kinh nghiệm về config cho driver không, trong config có rất nhiều loại driver mà mình chỉ biết có chút ít
ok, mình đã sửa lỗi được rùi
http://piece-of-c.googlecode.com/files/config-2.6.35.6
file này filter theo lệnh của quanta
mình thích xài kernel mới ngặt nỗi, sau khi biên dịch xong thì nó không thấy ổ SATA đâu
còn lấy config khác, thì nó không nhận ra USB flash drive của mình
bạn nào có kinh nghiệm biên dịch linux kernel chia sẽ với mình với:
smilie
 
Go to Page:  First Page Page 3 4 5 6 8 9 10 Page 11 Last Page

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|