16
submitted 1 day ago* (last edited 1 day ago) by PenisDuckCuck9001@lemmynsfw.com to c/nostupidquestions@lemmy.world

I love github and open source but when you have to install a library that isn't in your os's repository, oh boy.

In my current project, I need freetype. It compiles with make and make install. Now it's in my usr/lib/freetype2 and usr/include/freetype2 directory. The only problem is that the source files expect it to be in usr/lib and usr/include. The only fix is to manually change every include until it matches. You can get creative with find and replace but there is no 1 command fix and no matter what it's always a lot of work and consumes a lot of time.

While I could sit down and actually do that, I'm just going to have to do the same thing every time I want to compile it on a different distro or on a different system. I'd rather put the files in my source directory so it'll just compile every time so I only have to do this once.

I'm reasonably sure this isn't what you're supposed to do but I've shoehorned the last several libraries I needed into my project this way. A shitty hack that I only have to do once is better than a shitty hack I have to do a lot of times.

Is there a better way? It would have been so much easier to make everything have a top level h file but they split it into a lib and src directory which makes everything a huge pain in the ass when it doesn't work.

you are viewing a single comment's thread
view the rest of the comments
[-] PhilipTheBucket@ponder.cat 2 points 1 day ago

I definitely wouldn't recommend changing every include.

Can you configure freetype to go straight into /usr/local/lib and /usr/local/include instead, with no freetype/? That would be how I would attack it. Most libraries are going to have a way to configure them to go where you want them to go. GNU Stow can be very useful here to keep things organized.

What distro are you using that doesn't have freetype available? That seems strange.

[-] PenisDuckCuck9001@lemmynsfw.com 1 points 1 day ago* (last edited 1 day ago)

Void. It's like arch except that in exchange for stuff breaking less often, it's just compatible with a lot less stuff. There is no way to get virtual box running at all and the repository is really lackluster. Frankly it's not a worthwhile tradeoff.

[-] PhilipTheBucket@ponder.cat 3 points 1 day ago

Remove the locally compiled install and install freetype-devel, and see if that works.

[-] PenisDuckCuck9001@lemmynsfw.com 1 points 1 day ago* (last edited 1 day ago)

That worked but now I get a bunch of undefined reference errors. I tried adding the path of the libfreetype.a file to the makefile a few different ways but it's not changing anything. The line I tried adding everywhere was "-L/usr/lib/libfreetype.a".

Edit: actually "-lfreetype" made it work.

[-] PhilipTheBucket@ponder.cat 1 points 1 day ago

That sounds perfect. Installing the system -devel package and -lfreetype is the right way to do it. Glad you got it working!

load more comments (1 replies)
load more comments (4 replies)
this post was submitted on 26 Sep 2024
16 points (100.0% liked)

No Stupid Questions

35378 readers
894 users here now

No such thing. Ask away!

!nostupidquestions is a community dedicated to being helpful and answering each others' questions on various topics.

The rules for posting and commenting, besides the rules defined here for lemmy.world, are as follows:

Rules (interactive)


Rule 1- All posts must be legitimate questions. All post titles must include a question.

All posts must be legitimate questions, and all post titles must include a question. Questions that are joke or trolling questions, memes, song lyrics as title, etc. are not allowed here. See Rule 6 for all exceptions.



Rule 2- Your question subject cannot be illegal or NSFW material.

Your question subject cannot be illegal or NSFW material. You will be warned first, banned second.



Rule 3- Do not seek mental, medical and professional help here.

Do not seek mental, medical and professional help here. Breaking this rule will not get you or your post removed, but it will put you at risk, and possibly in danger.



Rule 4- No self promotion or upvote-farming of any kind.

That's it.



Rule 5- No baiting or sealioning or promoting an agenda.

Questions which, instead of being of an innocuous nature, are specifically intended (based on reports and in the opinion of our crack moderation team) to bait users into ideological wars on charged political topics will be removed and the authors warned - or banned - depending on severity.



Rule 6- Regarding META posts and joke questions.

Provided it is about the community itself, you may post non-question posts using the [META] tag on your post title.

On fridays, you are allowed to post meme and troll questions, on the condition that it's in text format only, and conforms with our other rules. These posts MUST include the [NSQ Friday] tag in their title.

If you post a serious question on friday and are looking only for legitimate answers, then please include the [Serious] tag on your post. Irrelevant replies will then be removed by moderators.



Rule 7- You can't intentionally annoy, mock, or harass other members.

If you intentionally annoy, mock, harass, or discriminate against any individual member, you will be removed.

Likewise, if you are a member, sympathiser or a resemblant of a movement that is known to largely hate, mock, discriminate against, and/or want to take lives of a group of people, and you were provably vocal about your hate, then you will be banned on sight.



Rule 8- All comments should try to stay relevant to their parent content.



Rule 9- Reposts from other platforms are not allowed.

Let everyone have their own content.



Rule 10- Majority of bots aren't allowed to participate here.



Credits

Our breathtaking icon was bestowed upon us by @Cevilia!

The greatest banner of all time: by @TheOneWithTheHair!

founded 1 year ago
MODERATORS