473,385 Members | 1,942 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Tell me about makefiles


I already understand how program compilation works (i.e. the
preprocessor produces individual translation units which get compiled
separately, and then the linker links the object files together), but
I don't know anything about makefiles.

If I had the following program:

/* main.c */

extern void Func(void);

int main(void)
{
Func();
return 0;
}

/* func.c */

#include <stdio.h>

void Func(void) { puts("Hello World!"); }

/* End of code */

, then I would compile it as follows with gcc:

gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe

What would my makefile for this look like?
Mar 7 '08 #1
22 1823
Tomás Ó hÉilidhe wrote:
I already understand how program compilation works (i.e. the
preprocessor produces individual translation units which get compiled
separately, and then the linker links the object files together), but
I don't know anything about makefiles.

If I had the following program:
[...]
What would my makefile for this look like?
It would look like something better discussed on
comp.unix.programmer than here.

--
Eric Sosman
es*****@ieee-dot-org.invalid
Mar 7 '08 #2
Tomás Ó hÉilidhe said:

<snip>
gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe

What would my makefile for this look like?
I don't know, but mine would look like this:

CC=gcc
CFLAGS=-W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align
-Wpointer-arith -Wbad-function-cast -Wmissing-prototypes
-Wstrict-prototypes -Wmissing-declarations -Winline -Wundef
-Wnested-externs -Wcast-qual -Wshadow -Wconversion -Wwrite-strings
-ffloat-store -O2
DFLAGS=-g -pg
a: a.o b.o
$(CC) $(CFLAGS) $(DFLAGS) -o prog.exe a.o b.o
a.o: a.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o a.o a.c
b.o: b.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o b.o b.c

clean:
rm a.o
rm b.o
rm prog.exe

install:
cp prog.exe /usr/local/bin
Note that, in a "real" makefile, the indented lines start with a HARD TAB
(ASCII 9) character.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Mar 7 '08 #3
Eric Sosman said:
Tomás Ó hÉilidhe wrote:
>What would my makefile for this look like?

It would look like something better discussed on
comp.unix.programmer than here.
What makes you think he's using Unix?

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Mar 7 '08 #4
Tomás Ó hÉilidhe wrote:
>
I already understand how program compilation works (i.e. the
preprocessor produces individual translation units which get compiled
separately, and then the linker links the object files together), but
I don't know anything about makefiles.

If I had the following program:

/* main.c */

extern void Func(void);
This is not related to your question, but isn't the above declaration
unnecessary seeing as functions have external linkage unless specified
otherwise?
int main(void)
{
Func();
return 0;
}

/* func.c */

#include <stdio.h>

void Func(void) { puts("Hello World!"); }

/* End of code */

, then I would compile it as follows with gcc:

gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe

What would my makefile for this look like?
Mar 7 '08 #5
santosh wrote:
Tomás Ó hÉilidhe wrote:
>I already understand how program compilation works (i.e. the
preprocessor produces individual translation units which get compiled
separately, and then the linker links the object files together), but
I don't know anything about makefiles.

If I had the following program:

/* main.c */

extern void Func(void);

This is not related to your question, but isn't the above declaration
unnecessary seeing as functions have external linkage unless specified
otherwise?
No, if you look again, he's defining the function in another compilation
unit.

--
Ian Collins.
Mar 7 '08 #6
On Sat, 08 Mar 2008 03:13:56 +0530, santosh wrote:
Tomás Ó hÉilidhe wrote:
>I already understand how program compilation works (i.e. the
preprocessor produces individual translation units which get compiled
separately, and then the linker links the object files together), but I
don't know anything about makefiles.

If I had the following program:

/* main.c */

extern void Func(void);

This is not related to your question, but isn't the above declaration
unnecessary seeing as functions have external linkage unless specified
otherwise?
The declaration is necessary. The extern keyword in the declaration is
unnecessary. (I'm sure that's what you meant.)

However, some coding styles do use the extern keyword to declare functions
that are defined in a different unit, in the same way that the keyword is
used to declare objects that are defined in a different unit. It's not
required, but it's perfectly valid C, and no less readable than its
shortened equivalent.
Mar 7 '08 #7
Harald van D?k wrote:
On Sat, 08 Mar 2008 03:13:56 +0530, santosh wrote:
>Tomás Ó hÉilidhe wrote:
>>I already understand how program compilation works (i.e. the
preprocessor produces individual translation units which get
compiled separately, and then the linker links the object files
together), but I don't know anything about makefiles.

If I had the following program:

/* main.c */

extern void Func(void);

This is not related to your question, but isn't the above declaration
unnecessary seeing as functions have external linkage unless
specified otherwise?

The declaration is necessary. The extern keyword in the declaration is
unnecessary. (I'm sure that's what you meant.)
Yes, sorry, that's what I meant. It's very late here.
However, some coding styles do use the extern keyword to declare
functions that are defined in a different unit, in the same way that
the keyword is used to declare objects that are defined in a different
unit. It's not required, but it's perfectly valid C, and no less
readable than its shortened equivalent.
I see. Thanks.

Mar 7 '08 #8
On 7 Mar 2008 at 21:34, Richard Heathfield wrote:
Tomás Ó hÉilidhe said:

<snip>
>gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe

What would my makefile for this look like?

I don't know, but mine would look like this:

CC=gcc
CFLAGS=-W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align
-Wpointer-arith -Wbad-function-cast -Wmissing-prototypes
-Wstrict-prototypes -Wmissing-declarations -Winline -Wundef
-Wnested-externs -Wcast-qual -Wshadow -Wconversion -Wwrite-strings
-ffloat-store -O2
DFLAGS=-g -pg
a: a.o b.o
$(CC) $(CFLAGS) $(DFLAGS) -o prog.exe a.o b.o
a.o: a.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o a.o a.c
b.o: b.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o b.o b.c

clean:
rm a.o
rm b.o
rm prog.exe

install:
cp prog.exe /usr/local/bin
Is this a joke? That's one of the most amateurish makefiles I've ever
seen.

Mar 7 '08 #9

"Tomás Ó hÉilidhe" wrote:
I don't know anything about makefiles ...
... What would my makefile for this look like? ...
Off-topic here; ask this question in the following newsgroup:

gnu.utils.help

Also read the O'Reilly book "Managing Projects with Gnu Make"
(available at computer stores, bookstores, and amazon.com).

Also try these googles:

gnu make
makefile

--
Cheers,
Robbie Hatley
lonewolf aatt well dott com
www dott well dott com slant user slant lonewolf slant
Mar 7 '08 #10
On Fri, 7 Mar 2008 23:46:34 +0100 (CET), Antoninus Twink
<no****@nospam.invalidwrote:
>On 7 Mar 2008 at 21:34, Richard Heathfield wrote:
>Tomás Ó hÉilidhe said:

<snip>
>>gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe

What would my makefile for this look like?

I don't know, but mine would look like this:

CC=gcc
CFLAGS=-W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align
-Wpointer-arith -Wbad-function-cast -Wmissing-prototypes
-Wstrict-prototypes -Wmissing-declarations -Winline -Wundef
-Wnested-externs -Wcast-qual -Wshadow -Wconversion -Wwrite-strings
-ffloat-store -O2
DFLAGS=-g -pg
a: a.o b.o
$(CC) $(CFLAGS) $(DFLAGS) -o prog.exe a.o b.o
a.o: a.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o a.o a.c
b.o: b.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o b.o b.c

clean:
rm a.o
rm b.o
rm prog.exe

install:
cp prog.exe /usr/local/bin

Is this a joke? That's one of the most amateurish makefiles I've ever
seen.
Is it now? I'm willing to have my mind illuminated. Do tell,
why is it "most amateruish"? Don't just make snarky comments,
explain yourself.

Richard Harter, cr*@tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
Save the Earth now!!
It's the only planet with chocolate.
Mar 7 '08 #11
On 7 Mar 2008 at 23:29, Richard Harter wrote:
On Fri, 7 Mar 2008 23:46:34 +0100 (CET), Antoninus Twink
<no****@nospam.invalidwrote:
>>On 7 Mar 2008 at 21:34, Richard Heathfield wrote:
>>Tomás Ó hÉilidhe said:

<snip>

gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe

What would my makefile for this look like?

I don't know, but mine would look like this:

CC=gcc
CFLAGS=-W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align
-Wpointer-arith -Wbad-function-cast -Wmissing-prototypes
-Wstrict-prototypes -Wmissing-declarations -Winline -Wundef
-Wnested-externs -Wcast-qual -Wshadow -Wconversion -Wwrite-strings
-ffloat-store -O2
DFLAGS=-g -pg
a: a.o b.o
$(CC) $(CFLAGS) $(DFLAGS) -o prog.exe a.o b.o
a.o: a.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o a.o a.c
b.o: b.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o b.o b.c

clean:
rm a.o
rm b.o
rm prog.exe

install:
cp prog.exe /usr/local/bin

Is this a joke? That's one of the most amateurish makefiles I've ever
seen.

Is it now? I'm willing to have my mind illuminated. Do tell,
why is it "most amateruish"? Don't just make snarky comments,
explain yourself.
To take the most trivial points:
1) doesn't take advantage of built-in rules
2) highly non-extensible - should define, say, $(OBJECTS) instead of
listing all the object files in more than one place.
3) should rm -f so that "make clean" doesn't return a non-zero value
when called with no built files present
4) "make install" fails to set permissions sensibly (most likely 755
will be wanted for a program in /usr/local/bin) - and it would be nice
to have a $(PREFIX) variable instead of hard-coding the path
5) WTF is "DFLAGS"? A non-standard variable name, with no comment
explaining what it's for.

Mar 7 '08 #12
In article <sl*******************@nospam.invalid>,
Antoninus Twink <no****@nospam.invalidwrote:
>>>DFLAGS=-g -pg
>5) WTF is "DFLAGS"? A non-standard variable name, with no comment
explaining what it's for.
It's obviously "debug flags".

-- Richard

--
:wq
Mar 7 '08 #13
Richard Harter wrote:
On Fri, 7 Mar 2008 23:46:34 +0100 (CET), Antoninus Twink
<no****@nospam.invalidwrote:
Is this a joke?
Is it now?

Twink is troll. More specfically, he is one that is netstalking Mr.
Heathfield. Killfile or ignore, is my recommendation.

Brian
Mar 8 '08 #14
Richard Harter wrote:
Antoninus Twink <no****@nospam.invalidwrote:
>Richard Heathfield wrote:
.... snip ...
>>
>>I don't know, but mine would look like this:

CC=gcc
CFLAGS=-W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align
-Wpointer-arith -Wbad-function-cast -Wmissing-prototypes
-Wstrict-prototypes -Wmissing-declarations -Winline -Wundef
-Wnested-externs -Wcast-qual -Wshadow -Wconversion -Wwrite-strings
-ffloat-store -O2
DFLAGS=-g -pg
a: a.o b.o
$(CC) $(CFLAGS) $(DFLAGS) -o prog.exe a.o b.o
a.o: a.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o a.o a.c
b.o: b.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o b.o b.c

clean:
rm a.o
rm b.o
rm prog.exe

install:
cp prog.exe /usr/local/bin

Is this a joke? That's one of the most amateurish makefiles
I've ever seen.

Is it now? I'm willing to have my mind illuminated. Do tell,
why is it "most amateruish"? Don't just make snarky comments,
explain yourself.
You realize you are talking to a prime troll?

At any rate, it is a fine example. The only criticism I would make
is that the dependencies for a.o and b.o do not include a.h and
b.h.

--
[mail]: Chuck F (cbfalconer at maineline dot net)
[page]: <http://cbfalconer.home.att.net>
Try the download section.
--
Posted via a free Usenet account from http://www.teranews.com

Mar 8 '08 #15
Robbie Hatley <se**************@for.my.email.addresswrote:
<snip>
I probably should have mentioned these, though:

comp.os.unix.misc
comp.unix.misc
comp.unix.programmer
And comp.unix.shell.

I'd also suggest

Recursive Make Considered Harmful
http://miller.emu.id.au/pmiller/books/rmch/

with the caveat that it should be taken with a grain of salt. But it's
probably the best way to understand exactly what is distinct about Make, as
opposed to a bunch of shell scripts or the various "project file" formats of
things like Visual Studio.

Mar 8 '08 #16
On 7 Mar 2008 at 23:50, Richard Tobin wrote:
In article <sl*******************@nospam.invalid>,
Antoninus Twink <no****@nospam.invalidwrote:
>>>>DFLAGS=-g -pg
>>5) WTF is "DFLAGS"? A non-standard variable name, with no comment
explaining what it's for.

It's obviously "debug flags".
Uh yeah, thanks, I did actually work that out. But why should I /have/
to work out someone's non-standard notation?

The real problem is that these flags should be added to CFLAGS so that
you can use make's builtin rules and avoid having to reinvent the wheel.

Even then, Heathfield chose the most error-prone way, saying how to make
a.o from a.c and separately how to make b.o from b.c, rather than
writing a single rule saying how to make (anything).o from (anything).c,
which is clearly much easier to maintain for large projects.

I humbly suggest:

DEBUG_FLAGS=-g -pg
CFLAGS=-pointless-warnings -clc-pedantry $(DEBUG_FLAGS)

and then make will *know* how to make a.o from a.c without needing to be
told.

Mar 8 '08 #17
Richard Heathfield wrote:
Eric Sosman said:
>Tomás Ó hÉilidhe wrote:
>>What would my makefile for this look like?
It would look like something better discussed on
comp.unix.programmer than here.

What makes you think he's using Unix?
Nothing. Still, I stand by my suggestion: He'll have
better luck with his question on comp.unix.programmer than
he will here.

--
Eric Sosman
es*****@ieee-dot-org.invalid
Mar 8 '08 #18
CBFalconer schrieb:
>Is it now? I'm willing to have my mind illuminated. Do tell,
why is it "most amateruish"? Don't just make snarky comments,
explain yourself.

You realize you are talking to a prime troll?
No matter if he's a troll or not: he certainly has valid points pointing
out the Makefile is sub-optimal. Actually I agree with all of his five
points.

Regards,
Johannes

--
"PS: Ein Realname wäre nett. Ich selbst nutze nur keinen, weil mich die
meisten hier bereits mit Namen kennen." -- Markus Gronotte aka Makus /
Kosst Amojan / maqqusz / Mr. G / Ferdinand Simpson / Quartillia
Rosenberg in dse <45**********************@newsspool3.arcor-online.net>
Mar 8 '08 #19
"Robbie Hatley" <se**************@for.my.email.addresswrites:
"Tomás Ó hÉilidhe" wrote:
>I don't know anything about makefiles ...
... What would my makefile for this look like? ...

Off-topic here; ask this question in the following newsgroup:
+1

God you're a great boon to this group!
>
gnu.utils.help

Also read the O'Reilly book "Managing Projects with Gnu Make"
(available at computer stores, bookstores, and amazon.com).

Also try these googles:

gnu make
makefile
Mar 8 '08 #20
cr*@tiac.net (Richard Harter) writes:
On Fri, 7 Mar 2008 23:46:34 +0100 (CET), Antoninus Twink
<no****@nospam.invalidwrote:
>>On 7 Mar 2008 at 21:34, Richard Heathfield wrote:
>>Tomás Ó hÉilidhe said:

<snip>

gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe

What would my makefile for this look like?

I don't know, but mine would look like this:

CC=gcc
CFLAGS=-W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align
-Wpointer-arith -Wbad-function-cast -Wmissing-prototypes
-Wstrict-prototypes -Wmissing-declarations -Winline -Wundef
-Wnested-externs -Wcast-qual -Wshadow -Wconversion -Wwrite-strings
-ffloat-store -O2
DFLAGS=-g -pg
a: a.o b.o
$(CC) $(CFLAGS) $(DFLAGS) -o prog.exe a.o b.o
a.o: a.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o a.o a.c
b.o: b.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o b.o b.c

clean:
rm a.o
rm b.o
rm prog.exe

install:
cp prog.exe /usr/local/bin

Is this a joke? That's one of the most amateurish makefiles I've ever
seen.

Is it now? I'm willing to have my mind illuminated. Do tell,
why is it "most amateruish"? Don't just make snarky comments,
explain yourself.
You clearly know next to nothing about makefiles if you support that as
a good example. It is a very poor example of a makefile. At the minimum
it doesn't use built in rules and too much stuff is duplicated.
Mar 8 '08 #21
On Sat, 08 Mar 2008 19:55:41 +0100, Richard <de***@gmail.com>
wrote:
>cr*@tiac.net (Richard Harter) writes:
>On Fri, 7 Mar 2008 23:46:34 +0100 (CET), Antoninus Twink
<no****@nospam.invalidwrote:
>>>On 7 Mar 2008 at 21:34, Richard Heathfield wrote:
Tomás Ó hÉilidhe said:

<snip>

gcc a.c b.c -ansi -pedantic -s -O3 -D NDEBUG -o prog.exe
>
What would my makefile for this look like?

I don't know, but mine would look like this:

CC=gcc
CFLAGS=-W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align
-Wpointer-arith -Wbad-function-cast -Wmissing-prototypes
-Wstrict-prototypes -Wmissing-declarations -Winline -Wundef
-Wnested-externs -Wcast-qual -Wshadow -Wconversion -Wwrite-strings
-ffloat-store -O2
DFLAGS=-g -pg
a: a.o b.o
$(CC) $(CFLAGS) $(DFLAGS) -o prog.exe a.o b.o
a.o: a.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o a.o a.c
b.o: b.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o b.o b.c

clean:
rm a.o
rm b.o
rm prog.exe

install:
cp prog.exe /usr/local/bin

Is this a joke? That's one of the most amateurish makefiles I've ever
seen.

Is it now? I'm willing to have my mind illuminated. Do tell,
why is it "most amateruish"? Don't just make snarky comments,
explain yourself.

You clearly know next to nothing about makefiles if you support that as
a good example. It is a very poor example of a makefile. At the minimum
it doesn't use built in rules and too much stuff is duplicated.
Since I said nothing about supporting it as a good example one
way or another your comment is irrelevant. That's all right, I
have no problem with your making irrelevant comments.
Richard Harter, cr*@tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
Save the Earth now!!
It's the only planet with chocolate.
Mar 8 '08 #22
Richard Harter said:

<snip>
Finally, I don't always follow all of my good advice.
Well, neither do I. Nevertheless...

On the subject of makefiles, I don't claim to be an expert. I never
particularly set out to be an expert. When I first starting using Linux a
few years ago, I rapidly discovered that none of the IDEs available for it
were quite my cup of tea, so I started using the command line, and
realistically speaking that meant I had to start using makefiles. Well, I
took a look at a few makefiles by other people, and thought "blech - they
are *trying* to make this hard". So I wrote a program to generate simple
makefiles for me, and I've been using that more or less ever since. If it
doesn't satisfy some arbitrary criterion of "professionalism", why should
I care? It's *correct*, and it works for me, and that's all I care about.
What's more, my makefiles are simple enough that I can easily remember how
they work, and I have no trouble explaining to other people how they work.
What's even more, they're pretty portable between compilers. I haven't
troubled to investigate how portable the more esoteric features of GNU
make are, but I suspect that other implementations' "make" programs might
just cough on those features. If ever I care enough, I'll find out. But so
far, so lazy.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Mar 8 '08 #23

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Janne Naukkarinen | last post by:
Have someone commercial Digital Mars (DMC) IDDE? I need help making makefiles, it is easier with IDDE. However, IDDE is not freely distributed on net. There is current WinVN WIP:
12
by: Max | last post by:
I know this isn't directly related to C++, but thought I'd ask anyway. I've already read about 10 tutorials on makefiles, still have this problem and hoping someone here could help me out. I'm...
5
by: djake | last post by:
Someone can explain me what are makefiles useful for? Couldn't i write shell script instead of makefiles? (*.sh in unix; *.cmd in win32) Moreover i really doesn't understand what dependencies are...
10
by: JS | last post by:
I have two Makefiles in two different directories. How do I know which of these Makefiles make will use and is there some way to specify which Makefile that should be run.
3
by: mmashaie | last post by:
Hi, I'm trying to compile a makefile. On my command line, I type make and I get the below message; I don't understand why I get that. I am using Borland C++ version 2: C:\Maryam\clarke> make...
19
by: milkyway | last post by:
Hello, I am running under Suse Linux and am putting together some code written in C. I am not clear on how to create makefiles and was wondering if there were any "makefile tools" out there. If...
12
by: spibou | last post by:
I have two identical files , u1.c and u2.c which only contain the line typedef int Q ; When I issue "splint u1.c u2.c" I get u2.c:1:13: Datatype Q defined more than once A function or variable...
3
by: tvnaidu | last post by:
porting windows static libs and dll into linux static lib abd shared lib, any tool to convert vcproj files to Linux makefiles? porting windows static libs and dll into linux static lib abd shared...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.